正規表現のパターンsupplied by the British governmentを使用して英国の郵便番号を検証しています。私のテストは現在、次のようになります。正規表現で文字列全体を一致させる
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
最初の2つのコンソールログは正しいですが、私は第三はfalseを返すように期待しました。テストは文字列の最後にパターンが一致したときにtrueを返しますが、文字列の先頭にはひらめきがあります。つまり、文字列全体が無効な郵便番号になります。
文字列全体にパターンを厳密に一致させるにはどうすればよいですか?
は、英国政府から直接コピーこのパターンですか?もしそうなら、私は彼らがこれを適切にテストしていないことに驚いています。 o) – agrm
@agrmはい.govウェブサイトに公開された文書から直接です。信じられないことに私は知っているが、それは政府がしていることのようなものだ。 – Coop
@agrm PDFへのリンクを追加しました。 – melpomene