web-dev-qa-db-ja.com

オランダの郵便番号/郵便番号の正規表現

オランダの郵便番号を検証するために、JavaScriptで正規表現を作成しようとしています。

郵便番号には、4つの数字、オプションでスペース、2つの(大文字と小文字を区別しない)文字を含める必要があります

有効な値:

1001aa  
1001Aa  
1001 AA

私は今これを持っていますが、それは機能しません:

var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/;
15
Flo

オランダの郵便番号の先行0要件を処理せず、SS、SA、およびSDの一致を排除するように編集されました。これですべてが可能になります。

最終正規表現:

var rege = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i;

フィドルユニットテスト: http://jsfiddle.net/hgU3u/

内訳は次のとおりです。

  1. ^は文字列の先頭に一致します
  2. [1-9][0-9]{3}は、ゼロ以外の1桁、および0〜9桁の3桁に一致します
  3. ?は0個または1個のスペースに一致します(*を使用して0個以上のスペースに一致させることができます)
  4. (?!sa|sd|ss)は、余りが「sa」、「sd」、または「ss」でないことを確認するための先読みテストです。
  5. [a-z]{2}は2つのa-z文字に一致します
  6. $は文字列の末尾に一致します
  7. 最後のiは、大文字と小文字を区別しない修飾子です。
47
Steven Moseley

これが私の解決策です。最後のiは、大文字と小文字を区別しません。

var rege = /^\d{4} ?[a-z]{2}$/i;
5
sabof

これをbootstrap検証のパターンとして使用するのに問題がある場合は、次のように変更することをお勧めします。

    ^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$

このように、大文字と小文字は区別されず、bootstrapバリデーターによって受け入れられます。

2
Ray