我正在尝试在 javascript 中构建一个正则表达式来验证荷兰邮政编码。
邮政编码应包含 4 个数字,然后是可选的空格,然后是 2 个(不区分大小写)字母
有效值:
1001aa
1001Aa
1001 AA
我现在有这个,但它不起作用:
var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/;
我正在尝试在 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}
匹配单个非零数字和三个 0-9 数字?
匹配 0 或 1 个空格(您可以使用*
匹配 0 或更多空格)(?!sa|sd|ss)
是检查余数不是“sa”、“sd”或“ss”的前瞻测试。[a-z]{2}
匹配 2 个 az 字符$
匹配字符串的结尾i
最后是不区分大小写的修饰符如果您无法将其用作引导验证的模式,我建议您将其更改为:
^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$
这样,它仍然不区分大小写并被引导验证器接受。
这是我的解决方案。最后的 i 使其不区分大小写:
var rege = /^\d{4} ?[a-z]{2}$/i;
排除的组合 ,SA SD SS
需要紧跟在 ! 签署以提供有效的结果;所以,不是,! SA|SD|SS
而是!SA|SD|SS
他们引入了 :space: 代码。
我的荷兰 NL 邮政编码正则表达式:
^[1-9][0-9]{3}[[:space:]]{0,1}(?!SA|SD|SS)[A-Z]{2}$ or
^[1-9][0-9]{3}[ ]{0,1}(?!SA|SD|SS)[A-Z]{2}$ works also (depends on software version on your server, the [:space:] code is not always accepted)
^ 在行首断言位置
匹配下面列表中的单个字符 [1-9] 1-9 匹配 1(索引 49)和 9(索引 57)之间范围内的单个字符(区分大小写)
匹配下面列表中的单个字符 [0-9] {3} 匹配前一个标记 3 次 0-9 匹配 0(索引 48)和 9(索引 57)之间的单个字符(区分大小写)
匹配下面列表中存在的单个字符 [[:space:]] {0,1} 匹配前一个标记 0 到 1 次,尽可能多次,根据需要返回(贪婪) [:space:] 匹配一个空白字符,包括换行符 [ \t\r\n\v\f](也写为 \s)
Negative Lookahead (?!SA|SD|SS) 断言下面的 Regex 不匹配 第一个替代 SA SA 匹配字符 SA 字面意思(区分大小写) 第二个替代 SD SD 匹配字符 SD 字面意思(区分大小写) 第三个替代 SS SS 匹配字符 SS 字面意思(区分大小写)
匹配下面列表中存在的单个字符 [AZ] {2} 与前一个标记完全匹配 2 次 AZ 匹配 A(索引 65)和 Z(索引 90)之间范围内的单个字符(区分大小写)
$ 在行尾断言位置
我用它制作的 JavaScript 函数:
function checkpostcode(){
$("#result_postcode").text("");
var xpr="^[1-9][0-9]{3}[[:space:]]{0,1}(?!SA|SD|SS)[A-Z]{2}$";
var pcRegex = new RegExp(xpr,"g");
var pccheck = document.getElementById("id_postcode");
if(pcRegex.test(pccheck.value)){
$("#result_postcode").html(" <i class=\"fa fa-check text-success\"></i>");
$("#result_postcode").css("color", "green");
$("#id_postcode").css("border", "2px solid green");
$("#id_postcode").css("background-color", "#bdf5bd");
validator();
} else {
$("#result_postcode").html(" <i class=\"fa fa-remove text-danger\"></i>");
$("#result_postcode").css("color", "red");
$("#id_postcode").css("border", "1px solid red");
}}
这是从 PHP 中的表单输入字段调用的:
echo"<input type=\"text\" id=\"id_postcode\" name=\"postcode\" value=\"\" placeholder=\"4 cijfers spatie 2 letters\" style=\"width:50%\" oninput=\"checkpostcode();\" required>";
echo"<span id=\"result_postcode\"></span>";
validator()
是一个 JavaScript 函数,它在每次输入字段发生更改以及页面首次完成加载时运行。它最终通过提供正确的 CSS 来显示该按钮来执行输入按钮的显示。
<script type="text/javascript" language="javascript">
$(document).ready(function(){
validator();
});
</script>
要显示禁用的按钮:
function validator(){
var postc=document.getElementById("id_postcode");
var h=postc.value.length;
if(h>0){
//als aan alle eisen voldaan wordt button vrijgeven
$("#maak_account_id").prop("disabled", false); //activeer de button
$("#maak_account_id").removeClass(); //opmaak wissen
$("#maak_account_id").addClass("button enabled"); //opmaak plaatsen
}else{
$("#maak_account_id").prop("disabled", true); //activeer een button
$("#maak_account_id").removeClass(); //opmaak wissen
$("#maak_account_id").addClass("button disabled"); //opmaak plaatsen
}
和表单按钮:
<input name="maak_account" id="maak_account_id" type="submit" value="Maak mijn account aan" style="float: right;" disabled>