英文:
Regex in jQuery.Validator for yy/mm/dd
问题
我正在尝试将一些自定义验证集成到我的表单中,用于特定字段。
我有两个字段,但我正在关注yy/mm/dd。
为此,我能够找到以下表达式:
^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$
我将其添加到以下jQuery代码中,我从一个加拿大邮政编码的自定义验证中复用了这段代码,这个验证是有效的。
//日期格式 yy/mm/dd
jQuery.validator.addMethod("yearMonthDay", function (yymmdd, element) {
return this.optional(element) ||
yymmdd.match(/^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/);
}, "请使用正确的格式 yy/mm/dd。");
这个验证方式可以在用户输入内容时看到字段旁边的错误提示,但我可以提交任何内容,所以这不起作用。
$("#form").validate({
rules: {
Birthdate: {
required: true,
yearMonthDay: true
}
}
});
有谁能帮助我吗?告诉我我哪里出错了?
英文:
I'm trying to integrate some custom validation into my form for specific fields.
I have two, but I'm focusing on yy/mm/dd
for this I was able to find this expression:
^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$
Which I added into this piece of jquery, which I am reusing from a Canadian postal code custom validation which works
//date format yy/mm/dd
jQuery.validator.addMethod("yearMonthDay", function (yymmdd, element) {
return this.optional(element) ||
yymmdd.match(/^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/);
}, "Please use the correct format yy/mm/dd.");
This works in the way that I can see the error by the field when someone types in it, but I'm able to submit anything, so this isn't working.
$("#form").validate({
rules: {
Birthdate: {
required: true,
yearMonthDay: true
}
}
});
Can anyone be of assistance to me? Show me where I've gone wrong?
答案1
得分: 2
请尝试更改:
/^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/
为
/^\d{2}\/(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/
您正在使用的正则表达式是用于匹配 yy-mm-dd 的,而我提供的正则表达式应该用于匹配 yy/mm/dd。
英文:
Could you try changing:
/^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/
to
/^\d{2}\/(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/
The regex you are using is looking for yy-mm-dd.
The one I supplied should be looking for yy/mm/dd
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论