日期:2014-05-18  浏览次数:20473 次

|zyciis| 一个日期正则 2008-02-29日通不过 大家帮改改
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

谢谢 要怎么改

------解决方案--------------------
真的不会改,
帮你顶
------解决方案--------------------
/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)|(^0{0,1}15[0-9]{9}$)/
------解决方案--------------------
发错了~~
------解决方案--------------------
/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/
------解决方案--------------------
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
------解决方案--------------------
这个主要是没有考虑到闰年,不过用正则来判断是否闰年并匹配,我看有点难(至少我不知道)
我的建议,你可以先进行匹配,然后自己判断是否闰年来看看,2 月分的是不是29

^((((1[6-9] ¦[2-9]\d)\d{2})-(0?[13578] ¦1[02])-(0?[1-9] ¦[12]\d ¦3[01])) ¦(((1[6-9] ¦[2-9]\d)\d{2})-(0?[13456789] ¦1[012])-(0?[1-9] ¦[12]\d ¦30)) ¦(((1[6-9] ¦[2-9]\d)\d{2})-0?2-(0?[1-9] ¦1\d ¦[color=#00FF00]2[0-8]))[/color] ¦(((1[6-9] ¦[2-9]\d)(0[48] ¦[2468][048] ¦[13579][26]) ¦((16 ¦[2468][048] ¦[3579][26])00))-0?2-29-))$ 

红色那段,就是用来匹配2 月分的,绿色那个就是匹配,是28还是29,你把[0-8]改成[0-9]就可以匹配29号了
------解决方案--------------------
不能嵌套颜色的样子?那用加粗试试

^((((1[6-9] ¦[2-9]\d)\d{2})-(0?[13578] ¦1[02])-(0?[1-9] ¦[12]\d ¦3[01])) ¦(((1[6-9] ¦[2-9]\d)\d{2})-(0?[13456789] ¦1[012])-(0?[1-9] ¦[12]\d ¦30)) ¦(((1[6-9] ¦[2-9]\d)\d{2})-0?2-(0?[1-9] ¦1\d ¦2[0-8])) ¦(((1[6-9] ¦[2-9]\d)(0[48] ¦[2468][048] ¦[13579][26]) ¦((16 ¦[2468][048] ¦[3579][26])00))-0?2-29-))$ 

------解决方案--------------------
不要用正则,好麻烦啊,用DateTime.Parse()强制软换下,成功就证明通过了啊
------解决方案--------------------
最后那个29后面多了一个"-",把那个横线去掉