Javascript Regular Expression匹配5或9位邮政编码

时间:2009-09-16 21:00:17

标签: javascript regex

我有一个与我最近的帖子类似的问题,但有一个邮政编码验证器,我试图转换为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。这就像验证的第二部分总是如此。这个表达对我来说再次起作用。我错过了什么吗?是否需要另一个逃脱角色?

2 个答案:

答案 0 :(得分:16)

添加锚点:new RegExp("^\\d{5}(-\\d{4})?$")。这会强制正则表达式引擎仅接受匹配,如果它从字符串的第一个字符(^)开始并在匹配的字符串($)的末尾结束。

请注意,您在问题中给出的正则表达式中可能存在拼写错误:第二个\d缺少反斜杠。

答案 1 :(得分:1)

将正则表达式更改为:

new RegExp("^\\d{5}(-\\d{4})?$")