常用的正则表达式
常用的正则表达式
字符
表达式 | 描述 |
---|---|
[abc] |
字符集。匹配集合中所含的任一字符。 |
[^abc] |
否定字符集。匹配任何不在集合中的字符。 |
[a-z] |
字符范围。匹配指定范围内的任意字符。 |
. |
匹配除换行符以外的任何单个字符。 |
\ |
转义字符。 |
\w |
匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。 |
\W |
匹配任何非字母数字(等价于[^A-Za-z0-9_])。 |
\d |
数字。匹配任何数字。 |
\D |
非数字。匹配任何非数字字符。 |
\s |
空白。匹配任何空白字符,包括空格、制表符等。 |
\S |
非空白。匹配任何非空白字符。 |
分组和引用
表达式 | 描述 |
---|---|
(expression) |
分组。匹配括号里的整个表达式。 |
(?:expression) |
非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 |
\num |
对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字。 |
锚点/边界
表达式 | 描述 |
---|---|
^ |
匹配字符串或行开头。 |
$ |
匹配字符串或行结尾。 |
\b |
匹配单词边界。比如hang\b可以匹配shaohang末尾的hang,不能匹配shaohangyan中的hang |
\B |
匹配非单词边界。比如hang\B可以匹配shaohangyan中的hang,不能匹配shaohang中的hang。 |
数量表示
表达式 | 描述 |
---|---|
? |
匹配前面的表达式0个或1个。即表示可选项。 |
+ |
匹配前面的表达式至少1个。 |
* |
匹配前面的表达式0个或多个。 |
| |
或运算符。并集,可以匹配符号前后的表达式。 |
{m} |
匹配前面的表达式m个。 |
{m,} |
匹配前面的表达式最少m个。 |
{m,n} |
匹配前面的表达式最少m个,最多n个。 |
断言
表达式 | 描述 |
---|---|
(?=) |
正向预查。比如shao(?=hang)能匹配shaohang中的shao,但不能匹配shaoping中的shao。 |
(?!) |
正向否定预查。比如shao(?!hang)不能匹配shaohang中的shao,但能匹配shaoping中的shao。 |
(?<=) |
反向预查。比如(?<=shao)hang能匹配shaohang中的hang,但不能匹配xiaohang中的hang。 |
(?<!) |
反向否定预查。比如(?<!shao)hang不能匹配shaohang中的hang,但能匹配xiaohang中的hang。 |
其他
表达式 | 描述 |
---|---|
/.../i |
忽略大小写。 |
/.../g |
全局匹配。 |
/.../m |
多行修饰符。用于多行匹配。 |
其他常用的正则片段
非负整数:
^\d+$
正整数:
^[0-9]*[1-9][0-9]*$
非正整数:
^((-\d+)|(0+))$
负整数:
^-[0-9]*[1-9][0-9]*$
整数:
^-?\d+$
非负浮点数:
^\d+(\.\d+)?$
正浮点数:
^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数:
^((-\d+\.\d+)?)|(0+(\.0+)?))$
负浮点数:
^(-((正浮点数正则式)))$
英文字符串:
^[A-Za-z]+$
英文大写串:
^[A-Z]+$
英文小写串:
^[a-z]+$
英文字符数字串:
^[A-Za-z0-9]+$
英数字加下划线串:
^\w+$
E-mail地址:
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
URL:
^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
或^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~
@[]':+!]([^<>""])$`邮政编码:
^[1-9]\d{5}$
中文:
^[\u0391-\uFFE5]+$
电话号码:
^((\(\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}$
双字节字符(包括汉字在内):
^\x00-\xff
匹配首尾空格:
(^\s*)|(\s*$)
(trim函数)匹配HTML标记:
<(.*)>.*<\/\1>|<(.*) \/>
匹配空行:
\n[\s| ]*\r
提取信息中的网络链接:
(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+)?
IP:
(\d+)\.(\d+)\.(\d+)\.(\d+)
电话区号:
/^0\d{2,3}$/
腾讯QQ号:
^[1-9]*[1-9][0-9]*$
帐号(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
中文、英文、数字及下划线:
^[\u4e00-\u9fa5_a-zA-Z0-9]+$