1. ホーム
  2. regex

[解決済み】英国の郵便番号にマッチするRegEx

2022-04-09 12:55:30

質問

入力文字列の中で、イギリスの複雑な郵便番号のみを検証する正規表現が必要です。通常の郵便番号と同様に、一般的でない郵便番号の形式もすべてカバーしなければなりません。例えば、以下のようなものです。

マッチ

  • CW3 9SS
  • SE5 0EG
  • SE50EG
  • SE5 0EG
  • WC2H 7LT

一致しない

  • aWC2H 7LT
  • WC2H 7LTa
  • WC2H

この問題を解決するにはどうしたらいいですか?

どのように解決するのですか?

郵便番号の英国政府データ標準を見てみることをお勧めします [リンク切れです。 XML アーカイブ をご覧ください。 ウィキペディア を参照してください]。データについての簡単な説明と、添付のxmlスキーマで正規表現が提供されています。これは正確にあなたが望むものではないかもしれませんが、良い出発点でしょう。RegExはXMLとは少し異なり、A9A 9AAのフォーマットで3番目の位置にP文字があることは、与えられた定義で許可されています。

英国政府から提供されたRegExは、次のようなものでした。

([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})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\s?[0-9][A-Za-z]{2})

Wikipediaの議論でも指摘されているように、これは実在しない郵便番号(例えばAAやZYで始まるもの)を許可するもので、より厳密なテストを提供しているので試してみてください。