Javascript正则表达式失败但不确定原因

时间:2016-04-26 00:07:37

标签: javascript regex

我正在尝试使用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');
    }

1 个答案:

答案 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

希望这有帮助。

此致