如何测试正则表达式
- 在两个斜杠之间输入正则表达式,不要自己再加斜杠。
- 选择标志,例如 g(查找所有匹配项)或 i(忽略大小写)。
- 粘贴要搜索的文本。匹配项会随着输入高亮显示,表格会列出每个匹配项及其位置和捕获组。
- 还可以输入替换内容,预览查找替换的结果。
本工具使用浏览器的 JavaScript 正则引擎,因此结果与 JavaScript 和 TypeScript 中 String.match、matchAll 和 replace 的行为完全一致。大部分语法在 Python、PHP、Java 和 C# 中也相同,但后行断言、命名分组和 Unicode 字符类可能略有差异。
正则表达式速查表
. | 除换行符以外的任意字符 |
|---|---|
\d \w \s | 数字、单词字符(字母、数字、_)、空白字符 |
\D \W \S | 非数字、非单词字符、非空白字符 |
[abc] [^abc] [a-z] | a、b、c 中的一个 · 除 a、b、c 以外的任意字符 · 一个范围 |
* + ? | 0 次或多次 · 1 次或多次 · 0 次或 1 次 |
{3} {2,5} | 正好 3 次 · 2 到 5 次 |
^ $ \b | 开头 · 结尾 · 单词边界 |
(…) (?:…) (?<name>…) | 捕获组 · 非捕获组 · 命名分组 |
a|b | a 或 b |
(?=…) (?!…) | 后面紧跟 · 后面不紧跟 |
\p{L} | 任何语言中的任意字母(需要 u 标志) |
常见问题
为什么某些正则表达式会让页面卡住?
带有嵌套重复的正则表达式(例如 (a+)+$)在某些输入上可能需要极长的时间(即“灾难性回溯”)。把重复的分组写得更具体一些,就能避免这种情况。