正则表达式(Regex)常用公式与语法速查表 – wiki基地

由于我当前的环境配置限制,暂时无法直接在您的目录中创建文件。但我可以直接在这里为您撰写这就篇《正则表达式 (Regex) 常用公式与语法速查表》。

您可以将以下 Markdown 内容复制并保存为 regex_guide.md 或其他您喜欢的格式。


正则表达式 (Regex) 常用公式与语法速查表

正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串中字符组合的强大工具。本文档涵盖了从基础语法到常用实例的速查指南。

1. 基础元字符 (Basic Metacharacters)

这些字符在正则表达式中具有特殊含义,如果需要匹配它们本身,通常需要使用反斜杠 \ 进行转义(例如 \. 匹配点号)。

符号 描述
. 匹配除换行符 (\n) 以外的任意单个字符。
^ 匹配字符串的开始位置。
$ 匹配字符串的结束位置。
* 匹配前面的子表达式 0 次或多次
+ 匹配前面的子表达式 1 次或多次
? 匹配前面的子表达式 0 次或 1 次 (即:可选)。
\ 转义字符,用于匹配保留字符本身 (如 \*, \.)。
| 逻辑“或” (OR),匹配左边或右边的表达式 (如 a|b)。

2. 字符类 (Character Classes)

用于匹配特定类型的字符集合。

符号 描述 等价形式
[abc] 字符集。匹配方括号内的任意一个字符。
[^abc] 否定字符集。匹配除了方括号内字符以外的任意字符。
[a-z] 范围。匹配指定范围内的任意字符 (如小写字母)。
\d 匹配任意数字 [0-9]
\D 匹配任意非数字字符。 [^0-9]
\w 匹配任意单词字符 (字母、数字、下划线)。 [A-Za-z0-9_]
\W 匹配任意非单词字符 [^A-Za-z0-9_]
\s 匹配任意空白字符 (空格、制表符、换行符等)。 [\t\n\r\f\v ]
\S 匹配任意非空白字符 [^\t\n\r\f\v ]

3. 量词 (Quantifiers)

控制匹配的次数。

符号 描述
{n} 确切匹配 n 次。
{n,} 至少匹配 n 次。
{n,m} 匹配 n 到 m 次。
* 等价于 {0,}
+ 等价于 {1,}
? 等价于 {0,1}

注意:默认情况下,量词是贪婪的 (Greedy),会尽可能多地匹配字符。在量词后加 ? (如 *?, +?) 可使其变为非贪婪 (Lazy),即尽可能少地匹配。

4. 边界与断言 (Anchors & Assertions)

用于限定匹配的位置,而不消耗字符。

符号 描述
\b 单词边界。匹配单词字符与非单词字符之间的位置。
\B 非单词边界
(?=...) 正向先行断言。匹配后面紧跟指定模式的位置。
(?!...) 负向先行断言。匹配后面紧跟指定模式的位置。
(?<=...) 正向后行断言。匹配前面是指定模式的位置 (部分语言支持)。
(?<!...) 负向后行断言。匹配前面不是指定模式的位置 (部分语言支持)。

5. 分组与引用 (Groups & References)

符号 描述
(...) 捕获组。将匹配的子字符串保存,可通过索引引用。
(?:...) 非捕获组。仅用于分组逻辑 (如 (?:ab)+),不保存匹配内容。
\n 反向引用。引用第 n 个捕获组匹配的内容 (如 \1 引用第1组)。

6. 常用修饰符 (Flags)

修饰符位于正则表达式之外 (如 /pattern/flags),用于改变匹配行为。

标志 含义 描述
i Ignore Case 忽略大小写匹配。
g Global 全局匹配 (查找所有匹配项,而非只找第一个)。
m Multiline 多行模式。使 ^$ 匹配每一行的开始和结束,而不仅仅是整个字符串。
s Dotall 单行模式。使 . 可以匹配换行符。

7. 常用正则表达式实例 (Common Examples)

以下是一些在开发中经常用到的正则表达式公式:

数字与号码

  • 整数: ^-?\d+$
  • 正整数: ^[1-9]\d*$
  • 浮点数 (保留2位小数): ^-?\d+(\.\d{2})?$
  • 手机号 (中国大陆 11 位): ^1[3-9]\d{9}$
  • 身份证号 (18位): ^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

网络与账号

  • Email 邮箱:
    regex
    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • URL 网址 (HTTP/HTTPS):
    regex
    ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
  • IP 地址 (IPv4):
    regex
    ^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
  • 用户名 (字母开头,允许5-16字节,允许字母数字下划线):
    regex
    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 强密码 (至少8位,包含大小写字母和数字):
    regex
    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

字符与日期

  • 中文字符: [\u4e00-\u9fa5]
  • 日期 (YYYY-MM-DD):
    regex
    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
  • HTML 标签: <(\w+)[^>]*>(.*?)<\/\1>

💡 技巧提示

  • 在编写复杂正则时,推荐使用在线工具 (如 Regex101Regexr) 进行实时调试。
  • 不同的编程语言 (Python, JavaScript, Go, Java) 对正则的支持略有差异,主要体现在转义符的使用和部分高级断言上。
滚动至顶部