常用正则表达式整理
1、匹配Email
1.
\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
2.
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?


2、IPv4 匹配
1.
\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}
2.
(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
3.
((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))


3、匹配中文汉字,两个unicode值正好是Unicode表中的汉字的头和尾。
1.单个汉字
[\u4e00-\u9fa5]
2.多个汉字
[\u4e00-\u9fa5]+


4、匹配双字节字符,包括汉字
1.单个
[^\x00-\xff]
2.多个
[^\x00-\xff]+
5、匹配网址
1.
[a-zA-z]+://[^\s]*
2.
^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+
3.
(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?



6、匹配身份证
1. 18位身份证号
(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)
2.15位 或 18 位身份证号
\d{17}[0-9Xx]|\d{15}
7、匹配手机号
(13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8}
8、日期匹配,格式为 年-月-日
1.简单匹配,匹配格式为 yyyy-mm-dd 或 yyyy/mm/dd 或 yyyy.mm.dd
\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}
这个表达式只是简单匹配 4位数字-2位数字-2位数字 这种格式。未做较多验证。
2.严格匹配,匹配格式为 yyyy-mm-dd,但这个表达式还有个问题,其闰年并未严格匹配。
([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-9]{3}[1-9] 这个代表前3位是0-9,第4位是1-9
[0-9]{2}[1-9][0-9]{1} 这个代表前2位是0-9,第3位是1-9,第4位是0-9
[0-9]{1}[1-9][0-9]{2} 这个代表第一位是0-9,第二位是1-9,第3-4为是0-9
[1-9][0-9]{3} 这个代表第一位是1-9,后3位是0-9
匹配代表年份 0001 到 9999 4位数字
第二段 (((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11) 分解为:
(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
表示 月份 01,03,05,07,08,10,12,日期 01-09,10-19,20-29,30-31
或者
(0[469]|11)-(0[1-9]|[12][0-9]|30)
表示 月份 04,06,09,11 日期 01-09,10-19,20-29,30
或者
02-(0[1-9]|[1][0-9]|2[0-8])
表示月份 02, 日期 01-09,10-19,20-28
3. 严格匹配,匹配格式为 yyyy-mm-dd,包括匹配闰年。
(([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]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)



9、时间匹配
([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d
10、匹配 HTML 标签
1. html 标签
<(.*)(.*)>.*<\/\1>|<(.*) \/>
或
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>
2. 匹配 script 标签
<script(.*?)</script>
3. 匹配 iframe 标签
<iframe(.*?)</iframe>

11、数据匹配
1.匹配正整数
^[1-9]\d*$
2.匹配负数
^-[1-9]\d*$
3.匹配整数
^-?[1-9]\d*$
4.匹配正整数 和 0
^[1-9]\d*|0$
5.匹配负整数 和 0
^-[1-9]\d*|0$
6.匹配正浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
7.匹配负浮点数
^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$
12、匹配电驴链接
ed2k://\|file\|([^\|]+?)\|(\d+?)\|([0-9a-zA-Z]{32})\|((?:/\|sources,([^\s\|]+?)\||h=([0-9a-zA-Z]{32})\||s=([^\s\|]+?)\||p=([^\s\|]+?)\|)*)/