/ / RegEx, um die Bondnummer zu überprüfen und zu formatieren - Javascript, Jquery, Regex

RegEx zur Validierung und Formatierung der Bond-Nummer - Javascript, Jquery, Regex

Ich habe das folgende String-Muster, in dem die Eingabe wie folgt formatiert werden sollte.

01-XXX-000001-01-0001 or 01-XXX-000001-01-001

Eingabe der Eingabe.

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

Benutzer können normale Zeichenfolge ohne Bindestrich oder mit Bindestrich eingeben

Fall 1 : Wenn der Benutzer 01XXX000001010001 eingibt dann Ergebnis sollte 01-XXX-000001-01-0001 sein

Fall 2: Wenn Benutzereingabe 01-XXX-000001-01-0001, dann keine Änderung erforderlich.

Regex wird mir mehr helfen.

Ich habe dies unten versucht, aber es funktioniert nur für Zahlen.

var n = "345453353435443435";
document.write(n.replace(/(d{2})(d{3})(d{6})(d{3})(d{4})/, "$1-$2-$3-$4-$5"));

Antworten:

1 für die Antwort № 1

So etwas sollte funktionieren:

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;

Tests

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");