如何使用此正则表达式检查值?

时间:2017-08-27 11:18:08

标签: jquery regex

我试图使用Regular Expression to Validate UK Number Plates但是我不知道怎么样,我知道jQuery的一大块,但我之前没有处理过正则表达式,这就是我所拥有的。

$('button#headerevalsubmit').click(function(){
    var headcarreg = $('input#headerevalcarreg');
    headcarreg.filter(function() {
        return this.value.match('(?<Current>^[A-Z]{2}[0-9]{2}[A-Z]{3}$)|(?<Prefix>^[A-Z][0-9]{1,3}[A-Z]{3}$)|(?<Suffix>^[A-Z]{3}[0-9]{1,3}[A-Z]$)|(?<DatelessLongNumberPrefix>^[0-9]{1,4}[A-Z]{1,2}$)|(?<DatelessShortNumberPrefix>^[0-9]{1,3}[A-Z]{1,3}$)|(?<DatelessLongNumberSuffix>^[A-Z]{1,2}[0-9]{1,4}$)|(?<DatelessShortNumberSufix>^[A-Z]{1,3}[0-9]{1,3}$)');
    });

});

但我一直得到无效的表达,我不知道为什么,我的目标是简单地检查文本框的输入是否是有效的英国号码牌。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您只想检查给定的英国号码牌是否有效,您可以通过删除所有已命名的捕获组来使该模式与JavaScript正则表达式兼容:

var uk_plate_number = /^(?:[A-Z]{2}[0-9]{2}[A-Z]{3}|[A-Z][0-9]{1,3}[A-Z]{3}|[A-Z]{3}[0-9]{1,3}[A-Z]|[0-9]{1,4}[A-Z]{1,2}|[0-9]{1,3}[A-Z]{1,3}|[A-Z]{1,2}[0-9]{1,4}|[A-Z]{1,3}[0-9]{1,3})$/;
return uk_plate_number.test(this.value);

请参阅regex demo

请注意,此方案更改了正则表达式的结构,因此不会重复执行:^...$|^...$ =&gt; ^(?:...|...)$(?:...)是一个非捕获组,可使^$适用于更改组中的每个替代项。