日常工作中经常会遇到的一些验证、匹配、替换等字符串操作都会用到一些常用的正则表达式,如果要用的时候才去构造则会浪费不少时间,所以这里收集了一些常用的,方便日后工作的需要。
用途 | 正则表达式 | 例子 | 备注 |
非负整数 | ^/d+$ | 0, 1, 2, 03, 00 | 正整数 + 0 |
^[1-9]/d*|0$ | 0, 1, 2 | 比上面的严格 | |
正整数 | ^/d*[1-9]/d*$ | 1, 2, 3, 04 | |
^[1-9]/d*$ | 1, 2, 3 | 比上面的严格 | |
非正整数 | ^((-/d+)|(0+))$ | 0, -1, -2, -03, -00 | 负整数 + 0 |
^-[1-9]/d*|0$ | 0, -1, -2 | 比上面的严格 | |
负整数 | ^-[0-9]*[1-9][0-9]*$ | ||
^-[1-9]/d*$ | |||
整数 | ^-?/d+$ | ||
^-?[1-9]/d*$ | |||
^[-/+]?/d+$ | |||
非负浮点数 | ^/d+(/./d+)?$ | 正浮点数 + 0 | |
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$ | |||
正浮点数 | ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$ | ||
^[1-9]/d*/./d*|0/./d*[1-9]/d*$ | |||
非正浮点数 | ^((-/d+(/./d+)?)|(0+(/.0+)?))$ | 负浮点数 + 0 | |
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$ | |||
负浮点数 | ^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$ | ||
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$ | |||
浮点数 | ^(-?/d+)(/./d+)?$ | ||
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$ | |||
^[-/+]?/d+(/./d+)?$ | |||
英文 | ^[A-Za-z]+$ | ||
大写英文 | ^[A-Z]+$ | ||
小写英文 | ^[a-z]+$ | ||
英文和数字 | ^[A-Za-z0-9]+$ | ||
英文、数字和下划线 | ^/w+$ | ||
中文、英文、数字及下划线 | ^[/u4e00-/u9fa5_a-zA-Z0-9]+$ | ||
Email地址 | ^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$ | ||
^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$ | |||
^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$ | |||
URL | ^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$ | ||
[a-zA-z]+://[^/s]* | |||
^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?$ | |||
^http:[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^/"/"])*$ | |||
年-月-日 | ^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$ | ||
月/日/年 | ^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$ | ||
电话号码 | (/d+-)?(/d{4}-?/d{7}|/d{3}-?/d{8}|^/d{7,8})(-/d+)? | 0511-4405222 或 021-87888822 | |
/d{3}-/d{8}|/d{4}-/d{7} | |||
(/d{3}-|/d{4}-)?(/d{8}|/d{7})? | |||
^(/(/d{3,4}-)|/d{3.4}-)?/d{7,8}$ | |||
^((/(/d{2,3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}(/-/d{1,4})?$ | |||
手机号码 | ^((/(/d{2,3}/))|(/d{3}/-))?13/d{9}$ | ||
电话区号 | ^0/d{2,3}$ | ||
IP地址 | ^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5]).(/d{1,2}|1/d/d|2[0-4]/d|25[0-5]).(/d{1,2}|1/d/d|2[0-4]/d|25[0-5]).(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$ | ||
/d+/./d+/./d+/./d+ | |||
中文 | [/u4e00-/u9fa5] | ||
^[/u0391-/uFFE5]+$ | |||
全角字符 | [^uFF00-uFFFF] | ||
双字节字符 | [^/x00-/xff] | 包括汉字在内 可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) | |
空白行 | /n[/s| ]*/r | 可以用来删除空白行 | |
/n/s*/r | |||
HTML标记 | <(.*)>.*<///1>|<(.*) //> | 网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 | |
<(/S*?)[^>]*>.*?<//1>|<.*? /> | |||
首尾空白字符 | (^/s*)|(/s*$) | 可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 | |
^/s*|/s*$ | |||
帐号 | ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ | 字母开头,允许5-16字节,允许字母数字下划线 | |
^[a-z]/w{3,}$ | 需要忽略大小写 | ||
密码 | ^[a-zA-Z]/w{5,17}$ | 字母开头,长度在6~18之间,只能包含字符、数字和下划线 | |
不安全密码 | ^(([A-Z]*|[a-z]*|/d*|[-_/~!@#/$%/^&/*/./(/)/[/]/{/}/?/'/"]*)|.{0,5})$|/s | ||
IdCard | ^/d{15}(/d{2}[A-Za-z0-9])?$ | ||
腾讯QQ号 | [1-9][0-9]{4,} | 腾讯QQ号从10000开始 | |
^[1-9]*[1-9][0-9]*$ | |||
^[1-9]/d{4,8}$ | |||
邮政编码 | [1-9]/d{5}(?!/d) | ||
^[1-9]/d{5}$ | |||
身份证 | ^/d{15}|/d{18}|/d{17}[xX]{1}$ | 中国的身份证为15位或18位 | |
货币 | ^/d+(/./d+)?$ | ||
数字 | ^[0-9]*$ | ||
^/d+$ | |||
n位的数字 | ^/d{n}$ | ||
至少n位的数字 | ^/d{n,}$ | ||
m~n位的数字 | ^/d{m,n}$ | ||
零和非零开头的数字 | ^(0|[1-9][0-9]*)$ | ||
有两位小数的正实数 | ^[0-9]+(.[0-9]{2})?$ | ||
有1~3位小数的正实数 | ^[0-9]+(.[0-9]{1,3})?$ | ||
非零的正整数 | ^/+?[1-9][0-9]*$ | ||
非零的负整数 | ^/-[1-9][]0-9"*$ | ||
长度为3的字符 | ^.{3}$ | ||
含有^%&’,;=?$/"等字符 | [^%&’,;=?$/x22]+ | ||
12个月 | ^(0?[1-9]|1[0-2])$ | ||
31天 | ^((0?[1-9])|((1|2)[0-9])|30|31)$ | ||
SQL语句 | ^(select|drop|delete|create|update|insert).*$ | 需要忽略大小写 | |
提取信息中的网络链接 | (h|H)(r|R)(e|E)(f|F) *= *('|")?(/w|//|//|/.)+('|"| *|>)? | ||
提取信息中的邮件地址 | /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* | ||
提取信息中的图片链接 | (s|S)(r|R)(c|C) *= *('|")?(/w|//|//|/.)+('|"| *|>)? | ||
提取信息中的IP地址 | (/d+)/.(/d+)/.(/d+)/.(/d+) | ||
提取信息中的中国手机号码 | (86)*0*13/d{9} | ||
提取信息中的中国固定电话号码 | (/(/d{3,4}/)|/d{3,4}-|/s)?/d{8} | ||
提取信息中的中国电话号码 | (/(/d{3,4}/)|/d{3,4}-|/s)?/d{7,14} | 包括移动和固定电话 | |
提取信息中的中国邮政编码 | [1-9]{1}(/d+){5} | ||
提取信息中的浮点数(即小数) | (-?/d*)/.?/d+ | ||
提取信息中的任何数字 | (-?/d*)(/./d+)? | ||
注意:上表中的各个表达式均来源于网络,还没有经过验证,使用时需进一步验证、修改后使用。包含例子的是经过验证的,可以根据需求进一步修改使用。
参考: