我以为是检查马来西亚IC卡的正确正则表达式:
\ d {6}-\ d {2}-\ d {4}(即xxxxxx-xx-xxxx格式的数字,其中x是0-9之间的数字)
但是,当我将其插入到jQuery中以进行验证时,即使它以正确的格式编写,也永远不允许它提交表单。
这是我的代码:
<script type="text/javascript">
$.validator.setDefaults({
submitHandler: function(form) {
form.submit();
}
});
$.validator.addMethod("regex", function (value, element, regexp)
{
var check = false;
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
}, "Please enter a valid ic number");
$(document).ready(function () {
// validate signup form on keyup and submit
$("#commentForm").validate({
rules: {
ic_no: {
required: true,
regex: "\d{6}\-\d{2}\-\d{4}"
}
},
messages: {
ic_no: {
required: "Please input the IC number before searching.",
regex: "Please enter a valid ic number."
}
}
});
});
我不是JavaScript或正则表达式的专家,但我认为这种“应该”有效。任何指针将不胜感激。
您必须在将要传递给RegExp
构造函数的字符串中转义反斜杠:
regex: "\\d{6}\\-\\d{2}\\-\\d{4}"
我也建议添加锚点:
regex: "^\\d{6}\\-\\d{2}\\-\\d{4}$"
这样,您将认为“ 1234567-12-12345”无效。
或者,您可以使用文字表达式传递RegExp对象:
regex: /^\d{6}-\d{2}-\d{4}$/
除了检查数字的长度,我们可以使用以下正则表达式检查它们可以插入的数字。更好吗?
(([[1-9]{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01]))-([0-9]{2})-([0-9]{4})