📋 Regex速查表

🔤 普通字符

表达式 描述
.[^\n\r] 匹配除换行符外的任意单个字符
[A-Za-z] 匹配任意字母(大小写)
[a-z] 匹配任意小写字母
[A-Z] 匹配任意大写字母
\d[0-9] 匹配任意数字
\D[^0-9] 匹配任意非数字字符
_ 匹配下划线
\w[A-Za-z0-9_] 匹配字母、数字或下划线
\W[^A-Za-z0-9_] 匹配非字母、数字、下划线的字符
\S 匹配任意非空白字符

⬜ 空白字符

表达式 描述
(空格) 匹配空格字符
\t 匹配制表符 (Tab)
\n 匹配换行符
\r 匹配回车符
\s 匹配任意空白字符(空格、制表符、换行符、回车符)

📚 字符集合

表达式 描述
[xyz] 匹配 x、y 或 z 中的任意一个
[^xyz] 匹配除 x、y、z 以外的任意字符
[1-3] 匹配 1、2 或 3
[^1-3] 匹配除 1、2、3 以外的任意字符

💡 字符集合相当于对括号内的单个字符进行 OR 操作。

💡 在 [ 后使用 ^ 表示"取反"。

💡 在字符集合内,. 表示字面意义的句号。

🔒 需要转义的字符

字符集合外

表达式 描述
\. 句号
\^ 脱字符
\$ 美元符号
\| 竖线
\\ 反斜杠
\/ 正斜杠
\( 左圆括号
\) 右圆括号
\[ 左方括号
\] 右方括号
\{ 左花括号
\} 右花括号

字符集合内

表达式 描述
\\ 反斜杠
\] 右方括号

💡 ^ 仅当紧接在 [ 之后时才需要转义。

💡 - 仅当位于两个字母或两个数字之间时才需要转义。

🔢 量词

表达式 描述
{n} 恰好匹配 n 次
{n,} 至少匹配 n 次
{n,m} 匹配 n 到 m 次
* 匹配 0 次或多次(等同于 {0,}
+ 匹配 1 次或多次(等同于 {1,}
? 匹配 0 次或 1 次(等同于 {0,1}

💡 量词放在要限定的表达式之后。

🚧 边界

表达式 描述
^ 匹配字符串开始位置
$ 匹配字符串结束位置
\b 匹配单词边界

💡 单词边界匹配规则:

  • 字符串开头,且第一个字符是 \w
  • 字符串中相邻的两个字符,第一个是 \w,第二个是 \W
  • 字符串结尾,且最后一个字符是 \w

🎯 匹配模式

表达式 描述
foo|bar 匹配 foo 或 bar
foo(?=bar) 正向先行断言:匹配后面是 bar 的 foo
foo(?!bar) 负向先行断言:匹配后面不是 bar 的 foo
(?<=bar)foo 正向后行断言:匹配前面是 bar 的 foo
(? 负向后行断言:匹配前面不是 bar 的 foo

📦 分组与捕获

表达式 描述
(foo) 捕获组:匹配并捕获 foo
(?:foo) 非捕获组:匹配 foo 但不捕获
(foo)bar\1 反向引用:\1 引用第 1 个捕获组,匹配 foobarfoo

💡 捕获组仅在以下方法中有效:

  • string.match(regexp)
  • string.matchAll(regexp)
  • string.replace(regexp, callback)

💡 \N 是对第 N 个捕获组的反向引用,N 从 1 开始。

🚩 标志(修饰符)

标志 描述
g 全局搜索(查找所有匹配,而非第一个)
i 忽略大小写
m 多行模式(^ 和 $ 匹配每行的开始和结束)
s dotAll 模式(. 匹配包括换行符在内的所有字符)
u Unicode 模式(正确处理 Unicode 字符)
y 粘附模式(从 lastIndex 位置开始匹配)
📖 工具说明

Regex速查表提供了 JavaScript 正则表达式的完整语法参考,包括字符匹配、量词、边界、分组、断言等,方便开发者快速查阅。

🔗 相关工具