正则表达式的格式为mm/dd/yyyy。
我当前的正则表达式目前有一个小问题,我无法确定。我可以使用有效的月份、闰年和年份范围验证 mm/dd/yyyy。尽管当写入的年份为'2016asdf' 时,它仍然接受该值。
它应该遵循的规则是:
有效值:
12/31/2016
1900 年 1 月 15 日
02/29/2016(因为2016年是闰年)
无效值:
1/01/1900(因为格式是“mm”而不是“m”)
01/32/1900(因为没有这样的日期)
13/22/1900(因为没有那个月)
03/01/2100(超出年份限制)
02/29/2017(因为2017年不是闰年)
你弄错了。这不应该通过 Regex 来完成,事实上,它并不打算这样做。为此,您需要执行以下步骤:
1- 通过正则表达式检查模式
2- 验证日期。
您正在寻找的模式是:
var pattern = /(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)\d{2}/
Run Code Online (Sandbox Code Playgroud)
看看这个看看模式:http : //regexr.com/3fe3s
最后,如果要检查日期是否为有效日期(在检查模式后)。
这是整个方法:
function isValidDate(dtValue2) {
// your desired pattern
var pattern = /(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)(\d{2})/
var m = dtValue2.match(pattern);
if (!m)
return false;
var d = new Date(dtValue2);
// Now let's ensure that the date is not out of index
if (d.getMonth()+1 == parseInt(m[1], 10) && d.getDate() ==parseInt(m[2], 10)) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)