问题
I'm trying to build a regular expression in javascript to validate a Dutch zipcode.
The zipcode should contain 4 numbers, then optionally a space and then 2 (case insensitive) letters
Valid values:
1001aa
1001Aa
1001 AA
I now have this, but it does not work:
var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/;
回答1:
Edited to handle no leading 0 requirement for Dutch postal codes, and to eliminate matches for SS, SA, and SD. This should do it all for you.
Final regex:
var rege = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i;
Fiddle unit test: http://jsfiddle.net/hgU3u/
Here's a breakdown:
^
matches beginning of string[1-9][0-9]{3}
matches a single non-zero digit, and three 0-9 digits?
matches 0 or 1 spaces (you could use*
to match 0 or more spaces)(?!sa|sd|ss)
is a lookahead test to check that the remainder is not "sa", "sd", or "ss".[a-z]{2}
matches 2 a-z characters$
matches the end of the stringi
at the end is the case-insensitive modifier
回答2:
Here is my solution. The i in the end makes it case-insensitive:
var rege = /^\d{4} ?[a-z]{2}$/i;
回答3:
In case you have trouble using this as pattern for bootstrap validation I suggest you change it to:
^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$
This way it is still case-insensitive and accepted by the bootstrap validator.
来源:https://stackoverflow.com/questions/17898523/regular-expression-for-dutch-zip-postal-code