我使用下面的代碼來驗證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