首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >马来西亚身份证(IC)正则表达式- jQuery

马来西亚身份证(IC)正则表达式- jQuery
EN

Stack Overflow用户
提问于 2014-04-25 15:15:57
回答 3查看 15.4K关注 0票数 5

我有一个我认为是检查马来西亚IC卡的正确正则表达式:

\d{6}-\d{2}-\d{4} (即xxxxxx-xx-xxxx格式的数字,其中x是0-9的数字)

但是,当我将它插入到我的jQuery中进行验证时,尽管它是以正确的格式编写的,但始终不允许它提交表单。

下面是我的代码:

代码语言:javascript
复制
<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也不是正则表达式专家,但我认为这“应该”可行。如果有任何建议,我们将非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-25 15:20:27

您必须转义将传递给RegExp构造函数的字符串中的反斜杠:

代码语言:javascript
复制
regex: "\\d{6}\\-\\d{2}\\-\\d{4}"

我还建议给它添加锚点:

代码语言:javascript
复制
regex: "^\\d{6}\\-\\d{2}\\-\\d{4}$"

这样你就会认为"1234567-12-12345“是无效的。

更新

或者,也可以使用文字表达式传递RegExp对象:

代码语言:javascript
复制
regex: /^\d{6}-\d{2}-\d{4}$/
票数 8
EN

Stack Overflow用户

发布于 2020-04-24 09:44:13

我们可以使用下面的正则表达式来检查他们可以插入的数字,而不是检查数字的长度。是不是更好?

代码语言:javascript
复制
(([0-9]{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01]))-([0-9]{2})-([0-9]{4})
票数 1
EN

Stack Overflow用户

发布于 2020-11-08 00:24:54

(([[0-9]{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01]))-([0-9]{2})-([0-9]{4})

这是我能找到的最严格的IC正则表达式。

这个正则表达式将确保IC出生时的日、月、年不正确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23286538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档