日期:2014-05-19  浏览次数:20936 次

求两个简单正则表达式!马上上分!!!
(1)匹配2个英文字母后根4个数字。
例如:AA1234, cs0000
(2)日期。
例如:2007-03-11,   2008-11-02.

------解决方案--------------------
1、这个很简单
^[a-zA-Z]{2}\d{4}$

2、这个其实并不简单的
^(((1[6-9]|[2-9]\d)(([02468][048])|([13579][26]))(-)?((((0?[13578])|(1[02]))(-)?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))(-)?((0?[1-9])|([1-2][0-9])|(30)))|(0?2(-)?((0?[1-9])|([1-2][0-9])))))|((1[6-9]|[2-9]\d)(([02468][1235679])|([13579][01345789]))(-)?((((0?[13578])|(1[02]))(-)?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))(-)?((0?[1-9])|([1-2][0-9])|(30)))|(0?2(-)?((0?[1-9])|(1[0-9])|(2[0-8]))))))$

日期,yyyy-MM-dd格式,并带闰年判断,年份为1600-9999,这里允许2007-3-11,20070311等格式的日期,如果对此有要求,稍加改进即可
------解决方案--------------------
占个位置再看.
------解决方案--------------------
日期这东西用正则太复杂...不推荐使用.
------解决方案--------------------
日期正则应用还可以,自己研究起来是比较累,不过熟悉了其中的几条,规则也还好写,这个是按楼主所给例子,只允许2007-03-11, 2008-11-02这样10位,连接符为“-”的

^(((1[6-9]|[2-9]\d)(([02468][048])|([13579][26]))-((((0[13578])|(1[02]))-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))-((0[1-9])|([1-2][0-9])|(30)))|(02-((0[1-9])|([1-2][0-9])))))|((1[6-9]|[2-9]\d)(([02468][1235679])|([13579][01345789]))-((((0[13578])|(1[02]))-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))-((0[1-9])|([1-2][0-9])|(30)))|(02-((0[1-9])|(1[0-9])|(2[0-8]))))))$
------解决方案--------------------
1.
^([a-zA-Z]{2})(\d{4})$
2.
(\d{4})(-)(\d{2})(-)(\d{2})

小试一把,不知合否