我有一个与我最近的帖子类似的问题,但有一个邮政编码验证器,我试图转换为javascript验证过程。我的脚本看起来像这样:
var regPostalCode = new RegExp("\\d{5}(-\d{4})?");
var postal_code = $("input[name='txtzipcode']").val();
if (regPostalCode.test(postal_code) == false) {
bValid = false;
msg = msg + '<li>Invalid Zip Code.</li>';
}
从我最近的帖子中我了解到一开始我需要的逃脱角色。基本上这个函数验证的是一个22621的邮政编码是正确的,但它不应该验证22601-1。破折号后应该有2位数字,如22601-9999。这就像验证的第二部分总是如此。这个表达对我来说再次起作用。我错过了什么吗?是否需要另一个逃脱角色?
答案 0 :(得分:16)
添加锚点:new RegExp("^\\d{5}(-\\d{4})?$")
。这会强制正则表达式引擎仅接受匹配,如果它从字符串的第一个字符(^
)开始并在匹配的字符串($
)的末尾结束。
请注意,您在问题中给出的正则表达式中可能存在拼写错误:第二个\d
缺少反斜杠。
答案 1 :(得分:1)
将正则表达式更改为:
new RegExp("^\\d{5}(-\\d{4})?$")