Ich bestätige eine Postleitzahl in Großbritannien mit dem Regex-Muster supplied by the British government. Mein Test sieht derzeit wie folgt aus:Die gesamte Zeichenfolge mit Regex abgleichen
const postcodeRegex = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))[0-9][A-Za-z]{2})$/g;
console.log(postcodeRegex.test('s75ed')); // returns true
console.log(postcodeRegex.test('s75ed555555')); // returns false
console.log(postcodeRegex.test('555555s75ed')); // returns true
Die ersten 2 Konsolenprotokolle korrekt sind, aber ich erwartete das dritte falsch zurück. Der Test gibt "true" zurück, wenn das Muster am Ende der Zeichenfolge gefunden wird. Dies ermöglicht jedoch jeden Jibberish am Anfang der Zeichenfolge, was bedeutet, dass die gesamte Zeichenfolge insgesamt eine ungültige Postleitzahl ist.
Wie kann ich das Muster strikt an die gesamte Zeichenfolge anpassen?
Ist das Muster direkt von der britischen Regierung kopiert? Wenn das so ist, bin ich überrascht, dass sie das nicht selbst getestet haben. Scheint mehrere Fehler zu haben: o) – agrm
@agrm Ja direkt von einem Dokument auf der .gov Website veröffentlicht. Unglaublich, ich weiß, aber so etwas macht die Regierung. – Coop
@agrm Ich habe einen Link zum PDF hinzugefügt. – melpomene