常用的正则表达式

常用的正则表达式

字符

表达式 描述
[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 多行修饰符。用于多行匹配。

其他常用的正则片段

  1. 非负整数:^\d+$

  2. 正整数:^[0-9]*[1-9][0-9]*$

  3. 非正整数:^((-\d+)|(0+))$

  4. 负整数:^-[0-9]*[1-9][0-9]*$

  5. 整数:^-?\d+$

  6. 非负浮点数:^\d+(\.\d+)?$

  7. 正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

  8. 非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$

  9. 负浮点数:^(-((正浮点数正则式)))$

  10. 英文字符串:^[A-Za-z]+$

  11. 英文大写串:^[A-Z]+$

  12. 英文小写串:^[a-z]+$

  13. 英文字符数字串:^[A-Za-z0-9]+$

  14. 英数字加下划线串:^\w+$

  15. E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

  16. URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~@[]':+!]([^<>""])$`

  17. 邮政编码:^[1-9]\d{5}$

  18. 中文:^[\u0391-\uFFE5]+$

  19. 电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

  20. 手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$

  21. 双字节字符(包括汉字在内):^\x00-\xff

  22. 匹配首尾空格:(^\s*)|(\s*$)(trim函数)

  23. 匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>

  24. 匹配空行:\n[\s| ]*\r

  25. 提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

  26. 提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

  27. 提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

  28. 提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

  29. 提取信息中的中国手机号码:(86)*0*13\d{9}

  30. 提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}

  31. 提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}

  32. 提取信息中的中国邮政编码:[1-9]{1}(\d+){5}

  33. 提取信息中的浮点数(即小数):(-?\d*)\.?\d+

  34. 提取信息中的任何数字 :(-?\d*)(\.\d+)?

  35. IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

  36. 电话区号:/^0\d{2,3}$/

  37. 腾讯QQ号:^[1-9]*[1-9][0-9]*$

  38. 帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  39. 中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$


常用的正则表达式
https://www.shaohang.xin/2018/09/20/technical/regex/
作者
少航
发布于
2018年9月20日
许可协议