问题描述
我想要一个验证标题格式日期的函数。 我的功能出了什么问题?
function validateDate(date) {
var pattern = new RegExp("^\d{4}-\d{2}-\d{2}$");
if (pattern.test(date))
return true;
return false;
}
谢谢!
1楼
您需要使用正则表达式对象: /^\\d{4}-\\d{2}-\\d{2}$/
或转义反斜杠: "^\\\\d{4}-\\\\d{2}-\\\\d{2}$"
。
此外,如果除日期之外的字符串中还有其他内容(例如空格),则此正则表达式将失败。
所以
var pattern = /^\s*\d{4}-\d{2}-\d{2}\s*$/;
可能是一个更好的选择。
此正则表达式(当然)不会检查有效日期,仅适用于由四位数字组成的字符串,连字符,两位数字,另一个连字符和另外两个数字。 你可能想要
-
使前导零可选(即使用
\\d{1,2}
而不是\\d{2}
) - 在正则表达式之外执行实际日期验证。
你可以(使用正则表达式)来验证日期,但它们并不漂亮。 更糟糕的是,如果您想考虑闰年或限制日期范围。
2楼
这可行,但它将验证日期,如9999-99-99。
function validateDate( date )
{
return /^\d{4}\-\d{2}\-\d{2}$/.test( date )
}
console.log( validateDate ( '2010-01-01' ) ); // True
3楼
这就是提供的一些帮助(我自己未经测试):
function validateDate(date) {
var pattern = new RegExp("(19|20)[0-9]{2}[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])");
var match = pattern.exec(date);
if (match != null) {
return true;
} else {
return false;
}
}
--Reinhard