【发布时间】:2013-07-04 09:25:27
【问题描述】:
我不擅长正则表达式。我得到了验证 dd/mm/yyyy 格式的代码,它也验证了闰年,我尝试修改以使其适用于 mm/dd/yyyy,但它们都失败了。
有人可以更改它以验证 mm/dd/yyyy 格式吗?
正则表达式:
^(((0[1-9]|[12]\d|3[01])/(0[13578]|1[02])/((19|[2-9]\d) \d{2}))|((0[1-9]|[12]\d|30)/(0[13456789]|1[012])/((19|[2-9]\d) \d{2}))|((0[1-9]|1\d|2[0-8])/02/((19|[2-9]\d)\d{2})) |(29/02/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468 ][048]|[3579][26])00))))$
回答 大家好,感谢大家的帮助,终于再次解析正则表达式,我得到了验证mm/dd/yyyy格式的答案
正则表达式:
/^(((0[13578]|1[02])/(0[1-9]|[12]\d|3[01])/((19|[2-9]\d )\d{2}))|((0[13456789]|1[012])/(0[1-9]|[12]\d|30)/((19|[2-9]\d )\d{2}))|(02/(0[1-9]|1\d|2[0-8])/((19|[2-9]\d)\d{2}) )|(02/29/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[ 2468][048]|[3579][26])00))))$/g
【问题讨论】:
-
最好尝试从输入字符串构造 Date 对象,如果它有效(非空),则日期有效。因为像闰年和一个月的天数这样的问题很容易解决
-
在这里使用正则表达式是个坏主意。人们无法在最好的情况下正确计算闰年 - 尝试在正则表达式中进行计算会很糟糕。
-
看看这个答案给你一些替代的想法:stackoverflow.com/a/16464768/592253
-
您不应该询问是否有人可以为您更改代码! momentjs.com
-
自己解析字符串并输入组件,见
String.split和Date
标签: javascript regex validation date date-conversion