【发布时间】:2017-04-19 13:30:28
【问题描述】:
我正在使用下面的代码来验证 dd/mm/yyyy 和 dd.mm.yyyy 格式的日期格式。
function validateDate(date){
var matches, d, m, y, cDate, format, dateFormatObj;
dateFormatObj = { format: /^(\d{2})[./](\d{2})[./](\d{4})$/, monthPos: 2, datePos:1, yearPos:3}
format = dateFormatObj.format;
matches = format.exec(date);
d = matches[dateFormatObj.datePos];
m = matches[dateFormatObj.monthPos] - 1;
y = matches[dateFormatObj.yearPos];
cDate = new Date(y, m, d);
return cDate.getDate() == d && cDate.getMonth() == m && cDate.getFullYear() == y;
}
alert(validateDate('22/05/2017'))
这对我来说很好,可以验证基本日期。
我试图解决的是,如果月份、日期和年份值之间的分隔符(/ 或 .)不同,那么它应该使其无效。
我尝试将正则表达式格式更改为/^(\d{2})[./](\d{2})\1(\d{4})$/,基本上使用与指定相同的捕获组,但这似乎不起作用,“匹配”结果为空。我已经阅读了几篇文章,但似乎缺少一些东西。我能做些什么来完成这项工作。
JS 小提琴 - https://jsfiddle.net/90dstrx5/
【问题讨论】:
-
这是一个更新的小提琴 - jsfiddle.net/90dstrx5/1。使用两种不同的格式并检查是否有任何匹配。
-
@Pugazh 我认为它不起作用。如果您将日期传递为“22/05.2017”,则会出现错误
-
该错误是由于日期无效。
22/05.2017是有效的日期格式吗? -
@Pugazh 的想法是如果用户输入错误,则使 "22/05.2017" 无效。
标签: javascript regex date