私は英国の郵便番号を検証することができるようしているよ、と理想的に、私は渡すために、次の例のようになる:英国の郵便番号の正規表現
- W1
- W12
- WC1
- WC1A
- WC12
- W1 6BT
- W12 6BT
- WC1 6BT
- WC1A 6BT
- WC12 6BT
- W16BT
- W126BT
- WC16BT
- WC1A6BT
- WC126BT
私は、次の正規表現のパターンがあります。
^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])([0-9][ABD-HJLNP-UW-Z]{2})?)$
を
このパターンでは、3または4の& 6桁または7桁のポストコードが使用できます(3桁または4桁の外向きコード、または6桁または7桁の全ポストコード)。ただし、ポイント4および6(ポストコード
^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKPS-UW]) {0,1}[0-9][ABD-HJLNP-UW-Z]{2})$
このパターンは外側のコードのみ)
(スペースなしで私たちと、6つのまたは7桁の郵便番号を可能にし、ではなく、不完全な郵便番号のための:スペース)が省略されているところ私も、このパターンを持っています
申し訳ありません王はすでにここで広範囲にカバーされている質問ですが、私が見つけたすべての例は、私の要件の一部と一致しますが、すべてではありません。
理想的には、3桁、4桁、6桁の数字を使用できる正規表現パターンが必要です。& 7桁のポストコード
UPDATE:私はそれが最初に完全に包括的だったとは思わないように私は私のパスケースを行ってきた再
。それは英国の郵便番号のパターンをたどると、以下の組み合わせのいずれかを検証する必要がありますされ、基本的な考え方:
1 Letter 1 Number
1 Letter 2 Numbers
2 Letters 1 Number
2 Letters 1 Number 1 Letter
2 Letters 2 Numbers
1 Letter 1 Number (OptionalSpace) 1 Number 2 Letters
1 Letter 2 Numbers (OptionalSpace) 1 Number 2 Letters
2 Letters 1 Number (OptionalSpace) 1 Number 2 Letters
2 Letters 1 Number 1 Letter (OptionalSpace) 1 Number 2 Letters
2 Letters 2 Numbers (OptionalSpace) 1 Number 2 Letters
^は、上記の理にかなって、十分な詳細であると思います。私は知っているビットを読みにくい。
ANSWER:
だから私は今、(例えば、パターン)の上にすべてのケースを渡し正規表現を持っています。以下のコメントで述べたように、それは非常に難しい、ALL英国の郵便番号に対応するために不可能ではないが、それにもかかわらず、以下のいずれかが、私は必要なすべてを行い、入力された症例の90%が良いことがあります:
^(GIR 0AA)|[a-z-[qvx]](?:\d|\d{2}|[a-z-[qvx]]\d|[a-z-[qvx]]\d[a-z-[qvx]]|[a-z-[qvx]]\d{2})(?:\s?\d[a-z-[qvx]]{2})?$
この[質問](http://stackoverflow.com/q/15960184/)を見て、それはいくつかのインスピレーションのための答えです。また、スペースについてあまり心配しないでください、あなたはプロセスを楽にするためにそれらを取り除くことができます! – HamZa
ああ、それは問題だ、トップはスペース付きのポストコードしか許さない。それ以外の方法であれば、間違いなくスペースを取り除くことができます。しかし、どこにスペースがないかを考えるのはちょっと難しいです。しかし、ありがとう! :) – JustinMoser
これを実行しようとすると、失敗する可能性があります。英国の郵便番号とGirobank、GIR 0AA、海外の領土、BFPO全体の数多くの特別な事例を検証するための正規表現(これは現在変更中ですが、https:// www。 gov.uk/government/publications/british-forces-post-office-locations)。同様に、多くの国で同じスタイルが使用されているため、検証に大きな問題を引き起こす可能性があります。最も簡単なことは、コードポイントが公開されているような公式データを使ってルックアップを作成することです。http://www.ordnancesurvey.co.uk/oswebsite/products/code-point-open – Ben