Javascript正则表达式匹配5或9位数的邮政编码

Bil*_*gan 8 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>';
    }
Run Code Online (Sandbox Code Playgroud)

从我最近的帖子中我了解到我在开始时需要的逃脱角色.基本上这个函数验证的是一个22621的邮政编码是正确的,但它不应该验证22601-1.破折号后应该有2位数字,如22601-9999.这就像验证的第二部分总是如此.这个表达对我来说再次起作用.我错过了什么吗?是否需要另一个逃脱角色?

Dir*_*irk 17

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

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