正则表达式速查表
字符类、量词、锚点、分组与高阶语法速查,标注引擎差异
共 57 条
.匹配除换行符外的任意单个字符
\d匹配一个数字,等价于 [0-9]
\D匹配一个非数字字符,等价于 [^0-9]
\w匹配字母、数字或下划线,等价于 [A-Za-z0-9_]
\W匹配非字母、数字、下划线的字符
\s匹配空格、制表符、换行符等空白字符
\S匹配一个非空白字符
[abc]匹配方括号中列出的任意一个字符
[^abc]匹配未在方括号中列出的任意字符
[a-z]匹配指定范围内的任意字符,如 [a-z] 匹配小写字母
[\u4e00-\u9fa5]匹配一个中文汉字(CJK 统一表意文字基本区)
*前面的元素重复 0 次或多次,等价于 {0,}
+前面的元素重复 1 次或多次,等价于 {1,}
?前面的元素出现 0 次或 1 次(可选),等价于 {0,1}
{n}前面的元素恰好重复 n 次,如 \d{4} 匹配 4 位数字
{n,}前面的元素至少重复 n 次
{n,m}前面的元素重复 n 到 m 次(含边界)
*? +? ??量词后加 ? 表示懒惰(非贪婪)匹配,尽可能少地匹配
^匹配字符串开头;多行模式(m)下匹配每行开头
$匹配字符串结尾;多行模式(m)下匹配每行结尾
\b匹配单词与边界之间的位置,不消耗字符
\B匹配非单词边界的位置
(...)将括号内内容作为一个整体,并捕获匹配结果供引用
(?:...)仅分组不捕获,不占用分组编号
(?<name>...)为捕获分组命名,可通过名字引用匹配结果
\1引用第 1 个捕获分组匹配到的内容,如 (ab)\1 匹配 abab
a|b匹配符号左侧或右侧的任意一个分支
(?=...)匹配位置后面紧跟指定内容才成功,不消耗字符
(?!...)匹配位置后面不紧跟指定内容才成功
(?<=...)匹配位置前面是指定内容才成功,不消耗字符
(?<!...)匹配位置前面不是指定内容才成功
g匹配全部结果而非第一个
i匹配时忽略字母大小写
m使 ^ 和 $ 匹配每一行的开头和结尾
s使 . 也能匹配换行符(dotAll)
u启用 Unicode 码点匹配,正确处理 emoji 等宽字符
y从 lastIndex 位置开始匹配(sticky)
\.匹配字面量点号本身,而非任意字符
\n \t \r分别匹配换行符、制表符、回车符
\u{1F600}按码点匹配 Unicode 字符,需配合 u 标志,如匹配 emoji
*+ ++ ?+量词后加 + 表示占有匹配,匹配后不回退;PCRE、Python 3.11+、Java 支持,JavaScript 不支持
(?>...)组内匹配后不再回退,可用于避免灾难性回溯;PCRE、Java、.NET 支持,JavaScript 不支持
(?(1)yes|no)第 1 个分组匹配成功则用 yes 分支,否则用 no 分支;PCRE、Python、.NET 支持,JavaScript 不支持
[[:alpha:]]POSIX 命名字符类,如 alpha、digit、alnum、space;PCRE 与 POSIX 支持,JavaScript 不支持
\k<name>引用命名分组 (?<name>...) 匹配到的内容;JavaScript、PCRE、.NET 支持,Python 写作 (?P=name)
\A匹配整个字符串的开头,不受多行模式影响;JavaScript 不支持,可用 ^ 替代
\Z匹配字符串结尾,并允许末尾有一个换行符;JavaScript 不支持
\z匹配字符串的绝对末尾,不允许多余换行;JavaScript 不支持
^[1-9]\d*$匹配非零开头的正整数
^1[3-9]\d{9}$匹配 1 开头第二位 3-9 的 11 位手机号
^[\w.-]+@[\w-]+(\.[\w-]+)+$匹配常见格式的电子邮箱地址
^https?://[^\s]+$匹配 http 或 https 开头的 URL
^(\d{1,3}\.){3}\d{1,3}$匹配点分十进制 IPv4 地址(未校验 0-255 范围)
^\d{4}-\d{2}-\d{2}$匹配 YYYY-MM-DD 格式日期
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$至少 8 位且同时包含字母和数字
<[^>]+>匹配成对的尖括号 HTML 标签
[\u4e00-\u9fa5]+从文本中提取连续的中文汉字
这个工具不好用,或者遇到 bug?
去反馈