Mám nasledujúci String vzor, v ktorom vstup by mal byť formátovaný ako je uvedené nižšie.
01-XXX-000001-01-0001 or 01-XXX-000001-01-001
vstup.
01: any two digit Number
xxx: any three characters
000001: Any 6 digit number
01: Any two digit number
0001: any number up to 4 digits
užívateľ môže zadať normálny reťazec bez pomlčky alebo pomlčky
Prípad 1: ak užívateľ zadá 01XXX000001010001 potom výsledok by mal byť 01-XXX-000001-01-0001
Prípad 2: ak užívateľský vstup 01-XXX-000001-01-0001 nevyžaduje žiadnu zmenu.
regex bude pre mňa viac nápomocný.
Skúšal som to nižšie, ale funguje to len pre čísla.
var n = "345453353435443435";
document.write(n.replace(/(d{2})(d{3})(d{6})(d{3})(d{4})/, "$1-$2-$3-$4-$5"));
odpovede:
1 pre odpoveď č. 1Niečo podobné by malo fungovať:
const regex = /^(d{2})-?([a-zA-Z]{3})-?(d{6})-?(d{2})-?(d{1,4})$/;
const reformat = str =>
regex.test(str) ? str.replace(regex, "$1-$2-$3-$4-$5") : null;
skúšky
const assert = require("assert");
assert.equal(reformat("invalid-format"), null);
assert.equal(reformat("01-XXX-000001-01-0001"), "01-XXX-000001-01-0001");
assert.equal(reformat("01XXX000001010001"), "01-XXX-000001-01-0001");
assert.equal(reformat("01XXX000001011"), "01-XXX-000001-01-1");
assert.equal(reformat("43-XPR-000643-01-0001"), "43-XPR-000643-01-0001");
assert.equal(reformat("43XPR000643010001"), "43-XPR-000643-01-0001");