我试图使用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}$)');
});
});
但我一直得到无效的表达,我不知道为什么,我的目标是简单地检查文本框的输入是否是有效的英国号码牌。
非常感谢任何帮助。
答案 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; ^(?:...|...)$
。 (?:...)
是一个非捕获组,可使^
和$
适用于更改组中的每个替代项。