Javascript 语义UI表单验证正则表达式将与mm/dd/yyyy日期不匹配

Javascript 语义UI表单验证正则表达式将与mm/dd/yyyy日期不匹配,javascript,regex,validation,semantic-ui,Javascript,Regex,Validation,Semantic Ui,我正在尝试验证文本框的文本输入,以仅允许mm/dd/yyyy输入。基于regex-tester,我试图匹配的正则表达式似乎是有效的 是什么导致它失败,我如何着手修复它 正则表达式:(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19 | 20)\d 正则表达式测试: JSFiddle: 片段: $('.ui.form').form({ 是的, 字段:{ 日期输入:{ 标识符:“dateInput”, 规则:[{ 键入:“regExp[/(0[

我正在尝试验证文本框的文本输入,以仅允许mm/dd/yyyy输入。基于regex-tester,我试图匹配的正则表达式似乎是有效的

是什么导致它失败,我如何着手修复它

正则表达式:
(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19 | 20)\d

正则表达式测试:

JSFiddle:

片段:

$('.ui.form').form({
是的,
字段:{
日期输入:{
标识符:“dateInput”,
规则:[{
键入:“regExp[/(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19[124; 20)\d\d/])”,
提示:“请选择有效的mm/dd/yyyy日期”
}]
},
时间输入:{
标识符:“timeInput”,
规则:[{
键入:“regExp[/^(OFF)|([0-1]?[0-9]| 2[0-3]):[0-5][0-9](:[0-5][0-9])?[APap][mM]$/”,
提示:“请选择有效的hh:mm AM/PM时间”
}]
}
}
});

提交

因为正则表达式是javascript字符串的一部分,所以任何反斜杠都需要使用双反斜杠进行转义。所以
\d
变成
\\d

另外,使用字符串的开头
^和结尾标记来防止来自较大字符串的匹配成功,例如
01/15/20155

结果:

type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",
片段:

type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",
$('.ui.form').form({
是的,
字段:{
日期输入:{
标识符:“dateInput”,
规则:[{
键入:“regExp[/^(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19[124; 20)\\d\\d$/])”,
提示:“请选择有效的mm/dd/yyyy日期”
}]
},
时间输入:{
标识符:“timeInput”,
规则:[{
键入:“regExp[/^(OFF)|([0-1]?[0-9]| 2[0-3]):[0-5][0-9](:[0-5][0-9])?[APap][mM]$/”,
提示:“请选择有效的hh:mm AM/PM时间”
}]
}
}
});

提交

因为正则表达式是javascript字符串的一部分,所以任何反斜杠都需要使用双反斜杠进行转义。所以
\d
变成
\\d

另外,使用字符串的开头
^和结尾标记来防止来自较大字符串的匹配成功,例如
01/15/20155

结果:

type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",
片段:

type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",
$('.ui.form').form({
是的,
字段:{
日期输入:{
标识符:“dateInput”,
规则:[{
键入:“regExp[/^(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19[124; 20)\\d\\d$/])”,
提示:“请选择有效的mm/dd/yyyy日期”
}]
},
时间输入:{
标识符:“timeInput”,
规则:[{
键入:“regExp[/^(OFF)|([0-1]?[0-9]| 2[0-3]):[0-5][0-9](:[0-5][0-9])?[APap][mM]$/”,
提示:“请选择有效的hh:mm AM/PM时间”
}]
}
}
});

提交

为什么不直接使用日期输入?似乎比越界JS更具语义…我使用的是日期输入,但它仍然允许无效输入,例如单个数字、5/1或5/55/5555…等等。我希望将该字段的验证与表单的其余验证清晰地联系起来,这就是为什么我尝试使用正则表达式来验证此输入字段。我对我的问题进行了编辑,以包括一个有效的正则表达式示例。代码中的所有输入,如
name=“dateInput”
似乎都使用
type=text
,而不是date…哦,我明白你的意思了。我使用JQuery日期选择器而不是HTML5,所以输入的类型需要是“文本”而不是“日期”。也许我只是在工作中使用了错误的工具?Goran在下面给出了一个很好的答案,你应该认为它是正确的。为什么不使用日期输入呢?似乎比越界JS更具语义…我使用的是日期输入,但它仍然允许无效输入,例如单个数字、5/1或5/55/5555…等等。我希望将该字段的验证与表单的其余验证清晰地联系起来,这就是为什么我尝试使用正则表达式来验证此输入字段。我对我的问题进行了编辑,以包括一个有效的正则表达式示例。代码中的所有输入,如
name=“dateInput”
似乎都使用
type=text
,而不是date…哦,我明白你的意思了。我使用JQuery日期选择器而不是HTML5,所以输入的类型需要是“文本”而不是“日期”。也许我只是在工作中使用了错误的工具?戈兰在下面给出了一个很好的答案,你应该认为它是正确的。