我有这个功能:
var isValidDate = function (date) {
var regEx = /^\d{2}\\d{2}\\d{4}$/;
return date.match(regEx) !== null;
};
我想用此表单验证我的日期:
23/01/2015
我的问题是我的REGEX很好..?
答案 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;