我需要测试输入的日期格式是否正确。我想接受多种日期格式,因此我创建了一个验证函数来测试至少一种格式是否正确,在这种情况下返回 true。
我使用 moment.js 来测试日期。
当我简单地输入硬编码字符串日期格式的条件时,该函数可以正常工作:
var multiDateValidator = function (value)
{
if ((moment(value, 'DD/MM/YYYY', true).isValid()) ||
(moment(value, 'D/M/YYYY', true).isValid()) ||
(moment(value, 'DD.MM.YYYY', true).isValid()) ||
(moment(value, 'D.M.YYYY', true).isValid()) ||
(moment(value, 'DD. MM. YYYY', true).isValid()) ||
(moment(value, 'D. M. YYYY', true).isValid())) {
return true;
}
return false;
};
但如果我想使用允许的日期格式列表,它不起作用,它永远不会返回 true。
var allowedDateFormats = ['DD/MM/YYYY', 'D/M/YYYY', 'DD.MM.YYYY', 'D.M.YYYY', 'DD. MM. YYYY', 'D. M. YYYY'];
var multiDateValidator = function (value)
{
allowedDateFormats.forEach(function(dateFormat)
{
if (moment(value, dateFormat, true).isValid()) {
return true;
}
});
return false;
};
第二个函数有什么问题吗?我知道我不太擅长 JavaScript,但它应该可以工作,不是吗?