kizumi_header_banner_img

欢迎来到99的小站!

加载中

文章导读

正则表达式基本语法简介


avatar
windows9999 2026年6月13日 15

一、元字符(特殊符号,匹配特殊含义)

1. 匹配位置(不占字符,只定位)

简写 等价 含义
\d [0-9] 数字
\D [^0-9] 非数字
\w [a-zA-Z0-9_] 字母、数字、下划线
\W [^a-zA-Z0-9_] 非单词字符
\s [ \t\n\r] 空白(空格、制表、换行)
\S [^ \t\n\r] 非空白字符

2. 匹配任意 / 限定字符

符号 作用
. 匹配任意单个字符(不含换行)
[] 字符集,匹配括号内任意一个
[^] 取反字符集,匹配不在括号内的字符
\| 或,分隔多个匹配规则
() 分组,捕获内容;也可整体限定重复

3. 重复量词(修饰前面 1 个 / 一组字符出现次数)

符号 含义
* 0 次、1 次、多次(\ge 0
+ 至少 1 次(\ge 1
? 0 次或 1 次(0/1);紧跟量词后 = 非贪婪
{n} 固定 n
{n,} 至少 n
{n,m} $n \sim m$ 次(包含两端)

4. 转义符号 \

把元字符变回普通字符:\. 匹配点、\* 匹配星号、\( 匹配括号。

预定义简写字符类(常用)

简写 等价 含义
\d [0-9] 数字
\D [^0-9] 非数字
\w [a-zA-Z0-9_] 字母、数字、下划线
\W [^a-zA-Z0-9_] 非单词字符
\s [ \t\n\r] 空白(空格、制表、换行)
\S [^ \t\n\r] 非空白字符

二、字符集 []

  • 范围简写[0-9][a-z][A-Za-z0-9]
  • 括号内多数元字符失效[.*+?] 在中括号内直接匹配符号本身,不需要加转义。
  • 脱字符位置:脱字符放最前才是取反 [^a-z];如果放中间(如 [a^z])只是普通符号。

三、分组与捕获

  • (内容):捕获分组,匹配后可提取分组内容、反向引用。
  • 反向引用\1 代表第 1 个括号匹配到的文本。
  • (?:内容):非捕获分组,只分组不保存,节省运行性能。

四、贪婪 vs 非贪婪

  • 默认贪婪:尽可能匹配最长的文本。例如 a.*b 匹配 a1b2b 的全部结果。
  • 非贪婪(加 ?:最短匹配。例如 a.*?b 只匹配 a1b

五、常用修饰符(写在正则外侧)

  • g:全局匹配,找到全部结果(不停止在第一个)。
  • i:忽略大小写。
  • m:多行模式,使 ^$ 能够匹配每行的首尾。
  • s:单行模式,使点号 . 可以匹配换行符。

六、最简示例(方便理解)

  • 手机号简单匹配^1[3-9]\d{9}$
  • 邮箱简易匹配^\w+@\w+\.\w+$
  • 纯数字验证^\d+$
  • 匹配小数^\d+(\.\d+)?$

七、避坑要点

  1. . 默认不匹配换行,需要匹配换行时记得开启 s 修饰符。
  2. ? 有两个作用:作为量词时代表“0次或1次”,紧跟其他量词后时代表“非贪婪”,注意区分场景。
  3. 路径斜杠、小数点、括号、星号在作为普通字符匹配时,必须用 \ 进行转义。
  4. ^$ 如果不加,会匹配到“包含该规则”的模糊字符串;加上才是从头到尾的“精确匹配”。
  5. 继续加油吧!


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码
津ICP备2026002186号-1