我使用下面的代码来验证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/
这里是一个更新的小提琴 - https://jsfiddle.net/90dstrx5/1/。使用两种不同的格式,并检查是否有匹配。 – Pugazh
@Pugazh我不认为它的作品。如果您将日期设为“22/05.2017”,则会发生错误 – whyAto8
该错误是由于日期无效。 22/05.2017是否是有效的日期格式? – Pugazh