一、基础元字符
| 符号 | 作用 | 示例 |
|---|---|---|
. |
任意单个字符(除换行) | a.b → acb、a1b |
^ |
行首 | ^abc → 以 abc 开头 |
$ |
行尾 | abc$ → 以 abc 结尾 |
\d |
数字 | \d{2} → 12、99 |
\w |
字母/数字/下划线 | \w+ → abc123_ |
\s |
空白 | a\sb → a b |
\D \W \S |
对应取反 | |
[abc] |
匹配 a/b/c | |
[^a] |
不匹配 a |
二、量词(次数控制)
| 量词 | 含义 |
|---|---|
? |
0 或 1 次 |
+ |
≥1 次 |
* |
0 或多次 |
{n} |
正好 n 次 |
{n,} |
≥n 次 |
{n,m} |
n~m 次 |
贪婪 / 非贪婪
- 默认贪婪(尽量多匹配)
- 加
?→ 非贪婪(尽量少匹配)
/<.*?>/g
三、分组与引用
()分组捕获(?:)非捕获分组|或\1反向引用
示例:
(\d)\1 → 匹配 11、22、99
四、零宽断言(定位)
(?=a)后面是 a(?!a)后面不是 a(?<=a)前面是 a(?<!a)前面不是 a
示例:
(?<=price:)\d+ → 提取 price: 后的数字
五、修饰符
i忽略大小写g全局匹配m多行模式
🚩 重点:正则实际使用方法(以js为例子)
1. test() ------ 判断是否匹配(返回 true/false)
用于表单验证、格式检查
js
let reg = /^\d+$/
reg.test("123") // true
reg.test("abc") // false
2. match() ------ 提取匹配结果(返回数组)
js
let str = "a1b2c3"
str.match(/\d/g) // ["1","2","3"]
3. replace() ------ 替换匹配内容
js
let str = "hello 123"
str.replace(/\d/g, "#") // "hello ###"
4. search() ------ 找位置(返回索引)
js
"abc123".search(/\d/) // 3
5. split() ------ 按正则分割字符串
js
"a1b2c".split(/\d/) // ["a","b","c"]
6. exec() ------ 高级匹配(循环抓取所有)
js
let reg = /\d/g
reg.exec("a1b2") // ["1"]
reg.exec("a1b2") // ["2"]
📌 快速用法总结
- 验证 → test
- 提取 → match
- 替换 → replace
- 找位置 → search
- 分割 → split
- 循环抓取 → exec
📌 常用实战正则(直接复制)
- 手机号:
^1[3-9]\d{9}$ - 邮箱:
^\w+@\w+\.\w+$ - 身份证:
^\d{17}[\dXx]$ - URL:
^https?://\S+$ - 中文:
[\u4e00-\u9fa5] - 邮政编码:
^\d{6}$