看完这篇再也不用担心不会写正则表达式了(建议收藏)

发布时间 2023-07-01 00:15:55作者: 程序员字典

概述

正则表达式其实就是一种规则,指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

正则基础语法

1.普通字符

语法 说明
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括

2.限定字符

语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

3.边界匹配字符

语法 说明
^ 行的开头
$ 行的结尾
\b 单词边界

常见快捷匹配

匹配字符串的常用表达式

  • 汉字:[1]{0,}$
  • 英文和数字:[2]+$ 或 [3]{4,40}$
  • 长度为3-20的所有字符:^.{3,20}$
  • 由26个大写英文字母组成的字符串:[4]+$
  • 由26个英文字母组成的字符串:[5]+$
  • 由26个小写英文字母组成的字符串:[6]+$
  • 由数字、26个英文字母或者下划线组成的字符串:^\w+$
  • 由数字和26个英文字母组成的字符串:[7]+$
  • 中文、英文、数字包括下划线:[8]+$
  • 中文、英文、数字但不包括下划线等符号:[9]+$

匹配数字的常用表达式

  • 数字:[10]*$
  • n位的数字:^\d{n}$
  • 至少n位的数字:^\d{n,}$
  • m-n位的数字:^\d{m,n}$
  • 零和非零开头的数字:^(0|[1-9][0-9]*)$
  • 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
  • 非零的负整数:^-[1-9][]0-9″$ 或 ^-[1-9]\d$
  • 非负整数:^\d+$ 或 [11]\d*|0$
  • 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d.\d|0.\d[1-9]\d|0?.0+|0)$

常见需求表达式

  • Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
  • 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • 身份证号(15位、18位数字):^\d{15}|\d{18}$
  • 电话号码(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
  • 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):[12]\w{5,17}$
  • 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
  • 日期格式:^\d{4}-\d{1,2}-\d{1,2}
  • 空白行的正则表达式:\n\s*\r (可以用来删除空白行)
  • IP地址:((???:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
  • 邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

总结

本文介绍了正则表达式的基础语法,以及常用表达式,建议收藏使用!


  1. \u4e00-\u9fa5 ↩︎

  2. A-Za-z0-9 ↩︎

  3. A-Za-z0-9 ↩︎

  4. A-Z ↩︎

  5. A-Za-z ↩︎

  6. a-z ↩︎

  7. A-Za-z0-9 ↩︎

  8. \u4E00-\u9FA5A-Za-z0-9_ ↩︎

  9. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  10. 0-9 ↩︎

  11. 1-9 ↩︎

  12. a-zA-Z ↩︎