断言分类边界断言和前后断言,边界不在匹配范围内。

边界类型断言

字符 含义
^

匹配输入的开头。如果多行模式设为 true,^ 在换行符后也能立即匹配。

$

匹配输入的结束。如果多行模式设为 true,^ 在换行符前也能立即匹配。

\b

1、匹配一个单词的边界,这是一个字的字符前后没有另一个字的字符位置, 例如在字母和空格之间。 需要注意的是匹配的单词边界不包括在匹配中。换句话说,匹配字边界的长度为零。

示例:

2、字符类中,匹配退格字符[\b]

\B

匹配非单词边界。这是上一个字符和下一个字符属于同一类型的位置: 要么两者都必须是单词,要么两者都必须是非单词,例如在两个字母之间或两个空格之间。 字符串的开头和结尾被视为非单词。与匹配的词边界相同,匹配的非词边界也不包含在匹配中。

其他类型断言

字符 含义
x(?=y)

向前断言:x 被 y 跟随时匹配 x。例如,/Jack(?=Sprat|Frost)/ “Jack”后跟有“Sprat”或“Frost”的情况下才会得到匹配。 不过, 匹配结果不包括“Sprat”或“Frost”。

x(?!y)

向前否定断言:x 没有被 y 紧随时匹配 x。

(?<=y)x

向后断言:x 跟随 y 的情况下匹配 x。例如,对于/(?<=Jack)Sprat/, “Sprat”紧随“Jack”时才会得到匹配。对于/(?<=Jack|Tom)Sprat, “Sprat”在紧随“Jack”或“Tom”的情况下才会得到匹配。不过, 匹配结果中不包括“Jack”或“Tom”。

(?<!y)x

向后否定断言:x 不跟随 y 时匹配 x。