正则表达式速查表
选择正则表达式引擎
先选择您使用的引擎。参考表会隐藏不适用于该选择的语法。
在将常用正则表达式语法粘贴到代码前,可用此互动参考表进行比较。选择 JavaScript、PCRE2/PHP、Python re、.NET 或所有引擎视图,再选择主题并搜索显示的条目。某个标记在一个引擎中能编译,在另一个引擎中可能被拒绝或有不同含义,因此参考表会标出仅属于某一类的语法。搜索和复制均在浏览器中完成,本页不会对您的文本运行模式。
如何使用正则表达式速查表
-
1
选择引擎
从 JavaScript、PCRE2/PHP、Python re、.NET 开始,或比较全部。聚焦视图会省略不适用于所选引擎的条目。
-
2
选择主题
打开锚点、字符类、量词、分组、前瞻后顾、常见模式形状,或标志和选项。
-
3
在本地搜索和复制
直接在页面中搜索标记和说明,然后选择标记进行复制。搜索文字不会发送到服务器,也不会添加到 URL。
-
4
在实际运行时验证
在项目中使用相应的引擎、标志和 API 编译并测试最终表达式。此参考表解释语法,不验证生产数据。
兼容性很重要
正则表达式不是一种通用语言。此速查表将看似相同、却不能在各引擎间直接迁移的语法分开列出。
| 功能 | JavaScript RegExp | PCRE2 / PHP | Python re |
.NET |
|---|---|---|---|---|
| 绝对开头 | 不支持 \A |
\A |
\A |
\A |
| 绝对结尾 | 不支持 \z |
\z |
\Z |
\z |
Unicode 属性 \p{L} |
使用 u 或 v 模式 |
支持 | 内置 re 不支持 |
支持 |
| 命名捕获 | (?<name>...) |
(?<name>...) 或 (?P<name>...) |
(?P<name>...) |
(?<name>...) |
| 命名反向引用 | \k<name> |
\k<name> 或 (?P=name) |
(?P=name) |
\k<name> |
| 全局匹配 | g 标志加匹配 API |
preg_match_all 等重复匹配 API |
finditer 等重复匹配 API |
Matches 等重复匹配 API |
\d 和 \w 需要格外注意。在 JavaScript 中,\d 始终是 ASCII 数字 0-9,即使加入 u,\w 本质上仍是 ASCII 单词字符。其他引擎可根据模式和配置应用 Unicode 规则。若 Unicode 行为很重要,请写出并测试确切所需的属性或字符类。
锚点和边界
| 标记 | 表示的内容 | 可移植性说明 |
|---|---|---|
^ |
输入开头,或多行模式中的行首 | 四类引擎都支持。 |
$ |
输入结尾,或多行模式中的行尾 | 四类引擎都支持;末尾换行的细节不同。 |
\b |
单词边界 | 单词字符的定义取决于引擎和模式。 |
\A |
目标字符串绝对开头 | PCRE2、Python 和 .NET;JavaScript 不支持。 |
\z |
目标字符串绝对结尾 | PCRE2 和 .NET;Python 使用 \Z。 |
\Z |
Python 目标字符串结尾 | PCRE2 和 .NET 也可在最后一个换行前匹配;绝对结尾请使用 \z。 |
分组和前瞻后顾
| 标记 | 含义 | 重要限制 |
|---|---|---|
(abc) |
捕获组 | 四类引擎都支持。 |
(?:abc) |
非捕获组 | 四类引擎都支持。 |
(?<name>abc) |
命名组 | JavaScript、PCRE2 和 .NET 语法。 |
(?P<name>abc) |
命名组 | Python 语法;PCRE2 也接受。 |
(?=abc) / (?!abc) |
正向 / 负向前瞻 | 四类引擎都支持。 |
(?<=abc) / (?<!abc) |
正向 / 负向后顾 | 四类引擎都支持,但允许的后顾长度不同。 |
后顾是常见的可移植性陷阱。Python re 需要固定宽度后顾。JavaScript 是否支持取决于部署的运行时。不要只依赖速查表中的一行,应在您支持的最旧运行时中测试确切模式。
模式形状,不是完整验证器
常见模式条目有意只描述形状。例如,^\d{4}-\d{2}-\d{2}$ 会接受 2026-99-99,简单的电子邮件形状模式也无法实现完整的电子邮件地址标准。完成初步格式检查后,请使用合适的库解析日期、URL 和结构化标识符。
| 形状 | 示例模式 | 不能证明什么 |
|---|---|---|
| 带符号小数 | ^-?\d+(?:\.\d+)?$ |
本地小数标记、分组、数值范围或精度。 |
| 电子邮件形状文本 | ^[\w.+-]+@[\w-]+\.[\w.-]+$ |
可投递或完全符合标准的电子邮件地址。 |
| HTTP(S) URL 形状文本 | ^https?://\S+$ |
安全、可解析或可访问的 URL。 |
| ISO 日期形状 | ^\d{4}-\d{2}-\d{2}$ |
真实的日历日期。 |
| ASCII slug 字符 | ^[A-Za-z0-9_-]+$ |
您的应用的大小写、分隔符或保留字规则。 |
标志和选项
未检查宿主 API 前不要复制标志。JavaScript 写作 /pattern/g,Python 传入 re.I 或 re.X,.NET 可使用 RegexOptions,而 PCRE2/PHP 通常使用分隔符和尾随修饰符。g 是 JavaScript 的全局匹配标志,不是 PCRE2 修饰符;重复 PCRE2 匹配通常由 PHP API 控制。扩展模式 x 可用于 PCRE2、Python 和 .NET,但不是 JavaScript 标志。
常见问题
不会。这是带有浏览器本地搜索和复制控件的语法参考表。请使用正则表达式测试器以及应用所用的运行时来编译模式,并测试有代表性的输入。
有些看起来熟悉的标记并不可移植。例如,Python 内置 re 对命名组使用 (?P<name>…),JavaScript 使用 (?<name>…),而 JavaScript 不支持绝对锚点 \A 或 \z。
不支持。在 JavaScript 中,\d 是 ASCII 数字,即使带有 u 标志,\w 也本质上是 ASCII 单词字符。其他引擎具有不同的 Unicode 模式和选项,因此请测试数据所需的行为。
只能把它们当作快速形状检查。它们不能证明电子邮件地址可投递、URL 安全或可访问、日期存在于日历中。生产规则应使用专用解析器或验证器。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
电话号码验证器
根据各国号码规划检查结构,并显示地区、类型以及E.164、国际、国内和RFC 3966格式。
BBCode 转 HTML 转换器
将 BBCode(论坛标记)转换为干净的 HTML。支持格式标签、列表、引用、代码、图片和链接。
随机颜色生成器
生成 1 到 50 个随机 HEX 颜色,查看色块,复制代码,并用于 CSS、测试或配色探索。