我正在尝试使用javascript验证英国邮政编码,据我所知,从堆栈上的线程读取,以下应该可以正常工作。但无论我到目前为止尝试过哪种有效的英国邮政编码,if语句都会失败。我有点像javascript的新手,
var postcode = $("#postcode").val().toUpperCase();
var regex = new RegExp("^((GIR &0AA)|((([A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]))) &[0-9][ABD-HJLNP-UW-Z]{2}))$");
if(regex.test(postcode)){
alert('yes');
} else {
alert('no');
}
答案 0 :(得分:0)
正如评论中所述,您的问题似乎是&符号&
。有点简化和纠正我相信你的正则表达式应该是:
^(GIR 0AA|(?:[A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?|[A-PR-UWYZ][0-9][A-HJKSTUW]|[A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]) [0-9][ABD-HJLNP-UW-Z]{2})$
捕获整个值,从一行到另一行的开头,匹配
Girobank的电脑
或强>
其他组合之一(在非捕获组
|
内以(?:...)
分隔)后跟终止space, digit, letter, letter
。
希望这有帮助。
此致