正则表达式速查表
可搜索的正则表达式速查表:锚点、字符类、量词、分组、环视、标志和替换语法,每一项都附有实时示例。
一份可筛选、可测试的简明正则表达式参考。每个条目都有简短的说明和示例,结果一列由你的浏览器正则引擎实时生成,所以你看到的是每个示例实际匹配的内容,而不是静态图表上的说法。其中也标出了 JavaScript、Python、PHP(PCRE)、Java 和 .NET 之间的差异——这正是同一个正则在一种语言中可用、在另一种语言中失败的常见原因。
使用方法
- 选择一个分类,如“量词”或“先行断言与后行断言”,也可以保持“全部”。
- 在搜索框中输入关键词进行筛选,例如 "lazy"、"named" 或 "boundary"。
- 查看每个标记的示例和实时结果。
- 点击“计算”。可以在表格下方的输入框中输入你自己的正则和文本,立即验证想法。
计算公式
每个示例都以 new RegExp(pattern, flags + "g") 对其样本文本运行;替换示例使用 text.replace(regex, replacement)。
标有“JavaScript 中不可用”的条目(占有量词、原子组、\A 和 \z、POSIX 字符类、详细模式、内联标志)在其他引擎中存在,但无法在浏览器中实时演示。计算在 Worker 中运行,两秒后停止。
示例
在“量词”分类中,懒惰示例 /<.+?>/ 作用于 "<b>bold</b>" 会返回两个匹配:"<b>" 和 "</b>",而贪婪的 <.+> 会吞掉整个字符串。在试用框中,\b\d{3}-\d{4}\b 作用于 "Call 555-1234 or 555-98765 today." 找到 1 个匹配:555-1234——第二个号码匹配失败,因为 \b 不能位于两个数字之间。
常见问题
贪婪量词和懒惰量词有什么区别?
贪婪量词(*、+、{n,m})会尽可能多地取文本,只有当正则的其余部分失败时才退回。加上 ?(*?、+?)后它们会尽可能少取,这通常正是你在引号或标签这类分隔符之间想要的。
为什么我的后行断言在 JavaScript 中可用,在 Python 中却失败?
Python 的 re 模块要求所有后行断言长度固定,所以 (?<=\$\d*) 会被拒绝。JavaScript 和 .NET 接受可变长度的后行断言。
\w 能匹配带重音的字母吗?
JavaScript 的 \w 主要匹配 ASCII 字母、数字和下划线。同时使用 Unicode 和忽略大小写标志时,K 和 ſ 这类折叠为 ASCII 的字符也会匹配。要匹配 Unicode 字母,请用 \p{L} 并加上 u 标志。
哪些字符必须转义?
在方括号之外:. * + ? ^ $ { } ( ) | [ ] 以及反斜杠本身。在方括号之内,只有 ]、\、开头的 ^ 以及字符之间的 - 是特殊的。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/regex-cheat-sheet/
引用此工具
kakaoCalc. (2026, November 8). 正则表达式速查表. https://kakao.mobile/zh/tools/regex-cheat-sheet/
“正则表达式速查表.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/regex-cheat-sheet/.