在线测试网站
正则表达式语法
- 普通字符:字母、数字、汉字、下划线、以及非特殊标点符号,在匹配一个字符串的时候,匹配与之相同的一个字符。
- 转义字符:匹配有特殊含义的字符时,需要使用转义字符
\。
| 符号 | 说明 |
|---|---|
| \n | 换行符 |
| \t | 制表符 |
| \\ | \本身 |
其他特殊字符:
.
|
^ $
? + *
[]
{}
()- 标准字符集合:是一种能够匹配多种字符的表达式。区分大小写,大写是取反的意思。
| 符号 | 说明 |
|---|---|
| \d | 0~9 任意一个数字 |
| \w | 任意一个字母、数字、下划线 |
| \s | 任意一个空格、制表符、换行符 |
| . | 任意一个除了换行符之外的字符 |
一般使用 [\s\S] 来匹配任意一个字符。
- 自定义字符集合:使用方
[]来定义想要匹配的字符集合。在中括号中的特殊符号除了^和-之外都失去其特殊含义;同时标准字符集合,除了小数点外,仍表示该标准字符集合。^表示取反;-表示范围。
| 举例 | 说明 |
|---|---|
| [ab?] | 匹配 ‘a’、‘b’、’?’ 中的任意一个 |
| [^abc] | 匹配除了 ‘a’、‘b’、‘c’ 以外的任意一个 |
| [a-z0-9] | 匹配 a-z,0-9 中的任意一个 |
| [\d\-.] | 匹配 0-9、’-’、’.’ |
- 量词:指定字符出现的次数。有贪婪模式(默认)和非贪婪模式之分。前者是匹配字符越多越好;后者匹配字符越少越好,在修饰匹配次数的特殊符号后面加上
?来表明使用非贪婪模式。
| 符号 | 说明 |
|---|---|
| {n} | 出现 n 次 |
| {m, n} | 出现 m-n 次 |
| {m,} | 至少出现 m 次 |
| ? | 出现 0 或 1 次 |
| + | 至少出现 1 次 |
| * | 不出现或出现任意次 |
- 字符边界:匹配符合条件的 位置,而不是字符。
^匹配字符串开始的位置;$匹配字符串结束的位置;\b匹配一个单词的开始或结束位置。- 在多行模式中,可以使用
\A、\Z来匹配整个文本的开头或结尾。
# 关于 \b 的举例
文本:
abc1 abc
表达式:abc\b 只能匹配到后面的 abc
表达式:\babc 可以匹配到两个的 abc- 零宽断言:与字符边界一样,匹配符合表达式的位置,而不匹配字符。
| 符号 | 说明 |
|---|---|
| (?=表达式) | 断言后面的位置满足表达式 |
| (?!表达式) | 断言后面的位置不满足表达式 |
| (?⇐表达式) | 断言前面的位置满足表达式 |
| (?<!表达式) | 断言前面的位置不满足表达式 |
- 选择符与分组:
| 符号 | 说明 |
|---|---|
| 表达式 1|表达式 2 | “或”,匹配左边或右边的表达式 |
| () 捕获组 | 1.将括号中的表达式作为一个整体 2.将表达式中匹配到的内容捕获并暂存,后面可以通过索引引用 |
| (?: 表达式) 非捕获组 | 小括号中使用 ?: 表示不暂存捕获到的内容 |
# 小括号作用 1,将表达式作为整体
表达式:(\d\d){2} 将匹配 4 个 数字
表达式:\d\d{2} 将匹配 3 个 数字
# 小括号作用 2,捕获匹配到的内容并引用
文本:haha hehe xixixi
表达式:(\w{2})\1 将匹配 haha hehe xixi
表达式:(\w{2})\1\1 将匹配 xixixi即是将小括号中表达式匹配到的内容暂存,通过 \n 引用,作为正则匹配的一部分。其中 n 表示第几个小括号,即表达式中出现的左括号 ( 的顺序,从 1 开始。
文本:aa1a b2b1 c3c3
表达式:
(\w)(\d)\1 将匹配 a1a b2b c3c
(\w)(\d)\1\2 将匹配 c3c3- 修饰符:指定匹配模式。
| 符号 | 说明 |
|---|---|
| g | 全局 |
| i | 忽略大小写 |
| m | 多行模式 |