如何以此格式验证日期(dd \ mm \ yyyy)

时间:2015-01-29 10:29:59

标签: javascript regex

我有这个功能:

var isValidDate = function (date) {
   var regEx = /^\d{2}\\d{2}\\d{4}$/;
   return date.match(regEx) !== null;
};

我想用此表单验证我的日期:

  

23/01/2015

我的问题是我的REGEX很好..?

3 个答案:

答案 0 :(得分:1)

您可以使用:

var regEx = /^\d{2}\\\d{2}\\\d{4}$/;

反斜杠也需要转义。

另请注意,您的原始字符串还需要\\这样的文字反斜杠:

var matched = regEx.test('15\\11\\2015')
//=> true

匹配dd/mm/yyyy正则表达式只是:

var regEx = /^\d{2}\/\d{2}\/\d{4}$/;

然而,这仍然不会使13/13/2015

等错误日期失效

答案 1 :(得分:1)

正则表达式并不安全。考虑99/99/9999,改进的正则表达式可以读取/^[0-3]\d\/[01]\d\/[12]\d{3}$/. However this still accept dates like 39/19 / 2999`,这显然是非法的。

虽然您可以进一步优化正则表达式以将单独的数字限制为有效范围,但如果您想排除第31页,它会变得相当复杂。我建议使用实际代码而不是正则表达式来执行此操作。

答案 2 :(得分:1)

您可以使用 html5模式。   更好的模式^([0-2]\d|3[0-1])\\(0\d|1[0-2])\\[1-2]\d{3}$。它也适用于正则表达式。



<input type="text" pattern="^\d{2}\\\d{2}\\\d{4}$" /><br/>
better
<input type="text" pattern="^([0-2]\d|3[0-1])\\(0\d|1[0-2])\\[1-2]\d{3}$" />
&#13;
&#13;
&#13;