Javascript Date Regex例如。 2010-06-03

时间:2010-06-30 13:36:46

标签: javascript regex

我想要一个验证标题格式日期的函数。我的功能出了什么问题?

function validateDate(date) {
 var pattern = new RegExp("^\d{4}-\d{2}-\d{2}$");
 if (pattern.test(date))
  return true;
 return false;
}

谢谢!

3 个答案:

答案 0 :(得分:4)

您需要使用正则表达式对象:/^\d{4}-\d{2}-\d{2}$/或转义反斜杠:"^\\d{4}-\\d{2}-\\d{2}$"

此外,如果除日期之外的字符串中还有其他内容(例如空格),则此正则表达式将失败。

所以

var pattern = /^\s*\d{4}-\d{2}-\d{2}\s*$/;

可能是更好的选择。

此正则表达式(当然)不会检查有效日期,仅适用于由四位数字组成的字符串,连字符,两位数,另一个连字符和两位数字。你可能想要

  1. 使前导零可选(即使用\d{1,2}代替\d{2}
  2. 在正则表达式之外执行实际日期验证。
  3. 你可以(使用正则表达式)来验证日期,但它们并不漂亮。如果你想考虑闰年或限制日期范围,那就更糟了。

答案 1 :(得分:0)

但这可以验证日期,如9999-99-99。

function validateDate( date )
{
  return /^\d{4}\-\d{2}\-\d{2}$/.test( date )
}

console.log( validateDate ( '2010-01-01' ) ); // True

答案 2 :(得分:0)

这是你在RegexBuddy的帮助下得出的结果(我自己未经测试):

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;    
}

}

- 莱因哈德