由于我当前的环境配置限制,暂时无法直接在您的目录中创建文件。但我可以直接在这里为您撰写这就篇《正则表达式 (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>