【问题标题】:Javascript regex failing but not sure whyJavascript 正则表达式失败但不知道为什么
【发布时间】:2016-04-26 21:41:04
【问题描述】:

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

【问题讨论】:

标签: javascript regex


【解决方案1】:

正如 cmets 中所述,您的问题似乎是与符号 &。稍微简化和更正了我相信你的正则表达式应该是:

^(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

希望这会有所帮助。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多