如何使用jquery只允许dd / mm / yyyy日期输入格式?

时间:2015-09-03 11:15:08

标签: jquery date

我正在设计一个网络表单,我希望用户只能以DD/MM/YYYY格式输入日期。

如果日期无效,我已尝试使用以下代码显示错误消息,但是如果我添加5/5/5之类的内容,则仍然会将其作为有效值传递。

$('#DateB').blur(function(){
    var s= $('#DateB').val();
    var dateRegex = '^(0[1-9]|1[012])[\/\-](0[1-9]|[12][0-9]|3[01])[\/\-](19|20)\d\d$';
    if(!dateRegex.match(s)){
        $("#msgDOB").val("date format not valid");
        $("#msgDate").css("display","block");
    }else
    {
        $("#msgDate").css("display","none");
    }
});

任何人都可以帮我调整一下这段代码吗?

2 个答案:

答案 0 :(得分:2)

尝试使用此正则表达式:

/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/

如果你只是使用文本框,那么尝试使用jquery masking。我会帮你避免这种类型的验证。

了解jquery masking click here

答案 1 :(得分:1)

试试这个正则表达式:

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

您可以在regex101.com

上对其进行测试