字符 量词 字符类 分组 锚点 修饰符 断言 常用模式
字符匹配
语法 描述 示例
. 匹配除换行符外的任意单个字符 a.c 匹配 "abc", "a c"
[abc] 匹配方括号中的任意一个字符 [aeiou] 匹配元音字母
[^abc] 匹配不在方括号中的任意字符 [^0-9] 匹配非数字字符
[a-z] 匹配指定范围内的字符 [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]
量词
语法 描述 示例
* 匹配 0 次或多次 a* 匹配 "", "a", "aa"
+ 匹配 1 次或多次 a+ 匹配 "a", "aa"
? 匹配 0 次或 1 次 colou?r 匹配 "color", "colour"
{n} 匹配恰好 n 次 \d{3} 匹配三个数字
{n,} 匹配至少 n 次 \d{3,} 匹配至少三个数字
{n,m} 匹配 n 到 m 次 \d{3,5} 匹配 3-5 个数字
锚点与边界
语法 描述 示例
^ 匹配字符串开头 ^Hello 匹配以 Hello 开头
$ 匹配字符串结尾 world$ 匹配以 world 结尾
\b 匹配单词边界 \bcat\b 匹配单词 "cat"
\B 匹配非单词边界 \Bcat\B 匹配 "cat" 不在边界
\A 匹配字符串开头(多行模式) \AStart
\Z 匹配字符串结尾(多行模式) end\Z
分组与引用
语法 描述 示例
(...) 捕获分组 (\d{3})-(\d{4}) 捕获区号和号码
(?:...) 非捕获分组 (?:www\.)? 匹配但不捕获
(?<name>...) 命名捕获分组 (?<area>\d{3}) 命名分组
\1, \2, ... 反向引用分组 (\w+) \1 匹配重复单词
(?=...) 正向肯定预查 Windows(?=10) 匹配后跟 10 的 Windows
(?!...) 正向否定预查 Windows(?!10) 匹配后不跟 10 的 Windows
修饰符(标志)
标志 描述 示例
i 忽略大小写 /hello/i 匹配 "Hello", "HELLO"
g 全局匹配(查找所有匹配) /a/g 匹配所有 "a"
m 多行模式(^ 和 $ 匹配每行) /^start/m 匹配每行开头的 "start"
s 单行模式(. 匹配换行符) /a.b/s 匹配 "a\nb"
u Unicode 模式 /\p{L}/u 匹配 Unicode 字母
y 粘性匹配(从 lastIndex 开始) /a/y 从指定位置匹配

常用正则表达式示例

电子邮件地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
验证标准的电子邮件地址格式
✓ user@example.com
✓ user.name@example.co.uk
✗ user@example
✗ @example.com
手机号码
^1[3-9]\d{9}$
验证中国大陆11位手机号码
✓ 13812345678
✓ 13987654321
✗ 12345678901
✗ 1381234567
日期 (YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
验证 YYYY-MM-DD 格式的日期
✓ 2023-12-25
✓ 2023-02-28
✗ 2023-13-01
✗ 23-12-25
提取所有 URL
https?://[^\s/$.?#].[^\s]*
从文本中提取所有 HTTP/HTTPS URL
✓ https://www.example.com
✓ http://example.com/path
✗ www.example.com
✗ example.com
提取所有 #标签
#(\w+)
从文本中提取所有 # 开头的标签
✓ #正则表达式
✓ #JavaScript
✗ 正则表达式
✗ ##双标签
提取金额
¥\s*\d+(?:\.\d{2})?
提取人民币金额,支持 ¥ 符号
✓ ¥100
✓ ¥99.99
✗ $100
✗ 100元
隐藏手机号中间四位
(\d{3})\d{4}(\d{4})
将手机号中间四位替换为 *
✓ 13812345678 → 138****5678
✓ 13987654321 → 139****4321
✗ 12345678901 (格式错误)
删除 HTML 标签
<[^>]+>
删除文本中的所有 HTML 标签
✓ <div>内容</div> → 内容
✓ <p class="text">段落</p> → 段落
移除多余空格
\s+
将多个连续空格替换为单个空格
✓ "a b c" → "a b c"
✓ "正则 表达式" → "正则 表达式"
前后单词交换
(\w+)\s+(\w+)
将两个单词的位置交换
✓ "Hello World" → "World Hello"
✓ "正则 表达式" → "表达式 正则"
匹配嵌套结构
\((?:[^()]|\((?:[^()]|\([^()]*\))*\))*\)
匹配最外层括号内的内容
✓ (a(b)c) → (a(b)c)
✓ (a(b(c)d)e) → (a(b(c)d)e)
✗ a(b)c
字母顺序重排
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}
强密码验证:大小写字母、数字、特殊字符
✓ Password123!
✓ Abc123@#$
✗ password123
✗ PASSWORD123

下载正则表达式速查表

下载这份正则表达式语法速查表,方便离线查阅