我是正则表达式的新手,我正在尝试使用正则表达式here来验证日期:
^[1-31]\.[1-12]\.[1999-2005]$
但是我得到的输出是“无效的reguar表达式”
有人可以告诉我,我在正则表达式上面做了什么错误吗?
答案 0 :(得分:4)
正则表达式无法匹配数字范围,就像您使用[1-31]
一样。它只能匹配字符范围。您需要将[1-31]
与([12]?[0-9]|3[01])
匹配 - 这不是世界上最友好的事情。
答案 1 :(得分:2)
您可以使用:
[0-9]{2}.[0-9]{2}.[0-9]{4}
或
^(0[1-9]|[12][0-9]|3[01]).(0[1-9]|1[012]).(19|20)[0-9]{2}$
两者都符合您的日期,但不会验证它。 我怀疑正则表达式是验证日期的好方法,因为你必须检查30到31之间以及28加闰年。
可能有正则表达式处理包括闰年在内的所有组合。但我建议使用您环境的现有功能。
例如,如果使用Ruby,则使用PHP checkdate()
或日期类。
答案 2 :(得分:1)
试试这个:
^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$
它可以匹配以下字符串〜
12.12.1999
12-12-1999
12 12 1999
12/12/1999
答案 3 :(得分:0)
我这样做,它完美地运作了......
for(var i=0; i<100;i++){
if( /^([1-9]|[1-2][0-9]|[3][0-1])$/.test(i) ) {
console.log(i);
}
}
// display only the range of 1 to 31 and disregards the 32-100