738 字
2 分钟
正则表达式速查表
这是一个正则表达式的速查表,和一些常用的例子
基础语法
| 字符 | 描述 |
|---|---|
. | 匹配任意单个字符(除换行符外) |
\d | 匹配数字,等价于 [0-9] |
\D | 匹配非数字,等价于 [^0-9] |
\w | 匹配字母、数字、下划线,等价于 [A-Za-z0-9_] |
\W | 匹配非字母、数字、下划线 |
\s | 匹配空白字符(空格、制表符、换行符等) |
\S | 匹配非空白字符 |
\n | 匹配换行符 |
\t | 匹配制表符 |
字符类
| 表达式 | 描述 |
|---|---|
[abc] | 匹配 a、b 或 c 中的任意一个字符 |
[^abc] | 匹配除 a、b、c 外的任意字符 |
[a-z] | 匹配 a 到 z 范围内的任意小写字母 |
[A-Z] | 匹配 A 到 Z 范围内的任意大写字母 |
[0-9] | 匹配 0 到 9 范围内的任意数字 |
量词
| 量词 | 描述 |
|---|---|
* | 匹配前面的元素零次或多次 |
+ | 匹配前面的元素一次或多次 |
? | 匹配前面的元素零次或一次 |
{n} | 匹配前面的元素恰好 n 次 |
{n,} | 匹配前面的元素至少 n 次 |
{n,m} | 匹配前面的元素至少 n 次,但不超过 m 次 |
位置锚点
| 锚点 | 描述 |
|---|---|
^ | 匹配字符串的开始位置 |
$ | 匹配字符串的结束位置 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
分组与引用
| 表达式 | 描述 |
|---|---|
(abc) | 捕获分组,将 abc 作为一个组 |
(?:abc) | 非捕获分组,不保存匹配的子字符串 |
a|b | 匹配 a 或 b |
\1, \2… | 引用前面的第 1、2…个捕获组 |
预定义字符类
| 字符类 | 等价表示 | 描述 |
|---|---|---|
\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] | 非空白字符 |
修饰符/标志
| 标志 | 描述 |
|---|---|
i | 不区分大小写 |
g | 全局匹配(查找所有匹配) |
m | 多行模式 |
s | 单行模式(使 . 匹配换行符) |
零宽断言
| 断言 | 描述 |
|---|---|
(?=exp) | 正向前瞻,匹配后面跟着 exp 的位置 |
(?!exp) | 负向前瞻,匹配后面不跟着 exp 的位置 |
(?<=exp) | 正向后顾,匹配前面是 exp 的位置 |
(?<!exp) | 负向后顾,匹配前面不是 exp 的位置 |
常用模式示例
| 用途 | 正则表达式 |
|---|---|
| 邮箱地址 | \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b |
| URL | https?://[^\s/$.?#].[^\s]* |
| IP 地址 | \b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b |
| 日期 (YYYY-MM-DD) | \d{4}-\d{2}-\d{2} |
| 手机号码 | 1[3-9]\d{9} |
| 中文字符 | [\u4e00-\u9fff] |
| HTML 标签 | <[^>]+> |
| 身份证号 | \d{17}[\dXx]|\d{15} |
转义字符
需要转义的特殊字符:. * + ? ^ $ { } [ ] ( ) \ |
贪婪与非贪婪
| 模式 | 描述 | 示例 |
|---|---|---|
| 贪婪模式 | 默认模式,匹配尽可能多的字符 | .* |
| 非贪婪模式 | 匹配尽可能少的字符 | .*? |
常用技巧
| 技巧 | 示例 | 说明 |
|---|---|---|
| 匹配非空字符串 | \S+ | 匹配一个或多个非空白字符 |
| 匹配整数 | -?\d+ | 匹配可选负号加数字 |
| 匹配浮点数 | -?\d+\.?\d* | 匹配可选小数部分 |
| 匹配空白行 | ^\s*$ | 匹配只包含空白字符的行 |
| 匹配引号内内容 | "([^"]*)" | 匹配双引号内的内容 |
| 匹配注释 | //.*$ 或 /\*.*?\*/ | 匹配单行或多行注释 |
// 电子邮件^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
// 手机号码^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$
// 身份证号(15位、18位)^\d{15}|\d{18}$
// 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
// 日期格式(YYYY-MM-DD)^\d{4}-\d{1,2}-\d{1,2}$
// 域名[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
// URL[a-zA-z]+://[^\s]*
// IP地址((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐










