在线测试网站

正则表达式语法

  • 普通字符:字母、数字、汉字、下划线、以及非特殊标点符号,在匹配一个字符串的时候,匹配与之相同的一个字符。
  • 转义字符:匹配有特殊含义的字符时,需要使用转义字符 \
符号说明
\n换行符
\t制表符
\\\本身

其他特殊字符:

.
|
^  $
?  +  *
[]
{}
()
  • 标准字符集合:是一种能够匹配多种字符的表达式。区分大小写,大写是取反的意思。
符号说明
\d0~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多行模式