我试图设置一个文本框来限制新西兰驾驶执照的格式,所以我一直在寻找regex来验证这一点,但我实际上不确定如何做到这一点。
该字段需要限制为2个字母后面跟着6个数字(AA123456)
到目前为止,我已经想出了这个模式/([A-Za-z]{2}'d{4})/
,我从http://www.regexr.com/得到的,但在寻找如何在输入字段中使用正则表达式后,我无法解决。我想让它在输入时验证,所以说他们输入AAB
,它不会添加B
。
我的代码:
$("#licenceNo").keyup(function() {
var data = $("#licenceNo").val().match(/([A-Za-z]{2}'d{6})/);
}
但我不知道下一步该做什么…
我还想使用PHP验证这个服务器端。我用同样的表达吗?
任何人可以张贴教程的链接吗?我搜索的都是EDU论文
客户端方法可能比服务器端验证更有意义。我想不出为什么在PHP中需要这样做。
这种方法可以让你删除最后一个字符,如果它不匹配你的模式,并将文本框设置为红色。否则,它将被设置为绿色并让您继续键入。
$("#licenseNo").on("change keyup", function() {
isValid = isValidLicenseNo(this.value);
if (isValid) {
$(this).css( "background-color", "green" );
} else {
$(this).val($(this).val().slice(0,-1));
$(this).css( "background-color", "red" );
}
});
function isValidLicenseNo(text) {
if(text.length < 2) return text.match(/(^[A-Za-z]{0,1})$/);
return text.match(/(^[A-Za-z]{2}'d{0,6}$)/);
}
Here's a JS Fiddle
我不得不对你的正则表达式做一些修改。'^'和'$'锚可以防止用户在初始匹配之后无限期地添加字符。小数匹配(''d{0,6}')后的范围有助于在用户仍在键入车牌时进行车牌匹配。要得到一个正确匹配0-1字符的RegEx是很棘手的,所以我作弊了,写了一个单独的RegEx。