正则表达式简明指南
核心元字符速查
元字符 |
功能描述 |
示例 |
匹配案例 |
. |
匹配除换行符外的任意字符 |
a.c |
abc, a1c |
* |
前导字符出现0次或多次 |
ab* |
a, ab, abb |
+ |
前导字符出现1次或多次 |
ab+ |
ab, abb |
? |
前导字符出现0次或1次 |
ab? |
a, ab |
^ |
匹配字符串起始位置 |
^Start |
Start... |
$ |
匹配字符串结束位置 |
End$ |
...End |
[] |
匹配括号内任意字符 |
[aeiou] |
a, e |
[^] |
排除括号内字符 |
[^0-9] |
a, B, @ |
() |
创建捕获组 |
(ab)+ |
ab, abab |
\ |
转义特殊字符 |
\. |
. |
字符类精要
- 基础形式:
[A-Za-z]
匹配任意字母,[0-9]
匹配数字
- 组合用法:
[\w.-]
匹配字母/数字/下划线/点/连字符(常用邮箱验证)
- 排除匹配:
[^aeiou]
匹配非元音字符
量词匹配模式
模式 |
符号 |
示例 |
匹配结果对比 |
贪婪匹配 |
* + ? |
a.*b |
axxxxyb中的全部内容 |
非贪婪匹配 |
*? +? ?? |
a.*?b |
axxxxyb中的第一个a和b之间的最短匹配 |
锚点定位技巧
^2025-
匹配以"2025-"开头的字符串(如日期)
-15$
匹配以"-15"结尾的字符串
^Hello$
精确匹配整个字符串"Hello"
捕获组实战
- 基础分组
(\d{4})-(\d{2})-(\d{2})
匹配日期格式,捕获年/月/日
- 示例:2025-04-15 → Group1:2025 Group2:04 Group3:15
- 反向引用
(\b\w+)\s+\1
检测重复单词
- 匹配:"hello hello"中连续重复的"hello"
预定义字符类
符号 |
等效表达式 |
功能说明 |
\d |
[0-9] |
数字字符 |
\w |
[A-Za-z0-9_] |
单词字符(含下划线) |
\s |
[ \t\n\r] |
空白字符(含空格/换行) |
\D |
[^0-9] |
非数字字符 |
高频使用技巧
- 手机号验证:
^1[3-9]\d{9}$
- 邮箱验证:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- HTML标签匹配:
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>| *\/>)