オランダの郵便番号を検証するために、JavaScriptで正規表現を作成しようとしています。
郵便番号には、4つの数字、オプションでスペース、2つの(大文字と小文字を区別しない)文字を含める必要があります
有効な値:
1001aa
1001Aa
1001 AA
私は今これを持っていますが、それは機能しません:
var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/;
オランダの郵便番号の先行0要件を処理せず、SS、SA、およびSDの一致を排除するように編集されました。これですべてが可能になります。
最終正規表現:
var rege = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i;
フィドルユニットテスト: http://jsfiddle.net/hgU3u/
内訳は次のとおりです。
^
は文字列の先頭に一致します[1-9][0-9]{3}
は、ゼロ以外の1桁、および0〜9桁の3桁に一致します?
は0個または1個のスペースに一致します(*
を使用して0個以上のスペースに一致させることができます)(?!sa|sd|ss)
は、余りが「sa」、「sd」、または「ss」でないことを確認するための先読みテストです。[a-z]{2}
は2つのa-z文字に一致します$
は文字列の末尾に一致しますi
は、大文字と小文字を区別しない修飾子です。これが私の解決策です。最後のiは、大文字と小文字を区別しません。
var rege = /^\d{4} ?[a-z]{2}$/i;
これをbootstrap検証のパターンとして使用するのに問題がある場合は、次のように変更することをお勧めします。
^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$
このように、大文字と小文字は区別されず、bootstrapバリデーターによって受け入れられます。