Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 荷兰邮政编码的正则表达式_Javascript_Regex_Zipcode - Fatal编程技术网

Javascript 荷兰邮政编码的正则表达式

Javascript 荷兰邮政编码的正则表达式,javascript,regex,zipcode,Javascript,Regex,Zipcode,我正试图用javascript构建一个正则表达式来验证荷兰zipcode zipcode应该包含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}

我正试图用javascript构建一个正则表达式来验证荷兰zipcode

zipcode应该包含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;
小提琴单元测试:

下面是一个细分:

  • ^
    匹配字符串的开头
  • [1-9][0-9]{3}
    匹配一个非零数字和三个0-9数字
  • 匹配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;
    

    如果您在使用此模式进行引导验证时遇到问题,我建议您将其更改为:

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

    这样,它仍然不区分大小写,并被引导验证程序接受。

    是的,这也是一个正确的解决方案。正则表达式中的+是前一个字符正则表达式(或括号中的模式)的一个或多个“命中”。在空格周围使用分隔符,可以使用这些分隔符定义字符范围,例如
    [0-6]
    从0到6。只需将其替换为“?”(一个空格和一个问号,使其成为可选的旁白:荷兰邮政编码从不以零开头。也没有以SS、SA或SD结尾的邮政编码。感谢Arjan/Bart:您如何在var rege=/^([0-9]{4}?[a-zA-Z]{2})中定义这些额外规则$/;@Florian-我在下面的答案中添加了一个最终测试,该测试将消除SS、SA和SD。试试看!)