0
点赞
收藏
分享

微信扫一扫

正则表达式注意事项


学习正则表达式的注意事项

1.123456789|456|45 将” | “左右的看成整体,即使没有();

2. 注意正则表达的的斜杠为” \ “,不为" / ".

3.正则表达式[ ]中的字符,默认为普通字符,没有正则表达式的特殊字符的含义。

国内电话:\d{3}-\d{8}|\d{4}-\{7,8}

腾讯QQ:[1-9][0-9]{4,}

电子邮件:[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

年月日:([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))

分析:

([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-  表示年份
(
(0[13578]|1[02]) - (0[1-9] | [12][0-9]| 3[01]))| 表示月份和日,有31天的月份和日
( (0[469]|11) - (0[1-9] | [12][0-9]|30)) | 表示30天的月份和日
(02 - (0[1-9] | [1][0-9]|2[0-8]))
)

((((19|20)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((19|20)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-(0?[1-9]|[12]\d)))$

优化为:


((((19|20)\d{2})-(0?(1|[3-9])|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$

该表达式的匹配规则(按以下序号为顺序):

1.匹配除了2月份之外的1-30日

2.若1无法匹配,则匹配1,3,5,7,8,10,12月份的31日

3.若2无法匹配,则匹配2月份的1-28日

4.若以上都无法匹配,那只可能剩下一天,那就是闰年2月份的最后一天2月29日



举报

相关推荐

0 条评论