我的博文地点:
https://www.luoyangfu.com/art…
近来有一个需求,要求是推断某个字符串不以什么开首。然后就最先探究这个不以什么开首和不容易什么末端的正则怎样写,why?
不以某字符串开首
这里须要提一个观点叫 否认式前项婚配
这个东东。
向前婚配
依据婚配的字符序列背面存在一个特定的字符序列
或许不存在一个特定的序列
来决议是不是婚配。关于向前婚配,出现在指定项背面的字符序列不会被正则表达式返回。
这里说背面存在一个特定字符序列, 也称之为肯定式向前查找
不存在一个特定的序列,也称之为否认式向前查找
最先处理这个题目不以某字符串开首:
^(?!str)
这里使用了下面几个元标记:
-
^
推断是不是是开首 -
?!
这里是不是定向前查询
示例:
- 不以test 开首字符串
/^(?!test).*/
不以某字符串末端
这里要说一个观点叫 否认式向后婚配
,前面说了向前婚配,想后婚配呢?
向后婚配
一个要婚配的字符串序列前面有或许没有指定的字符串序列
这里有指定字符串序列也叫
肯定式向后婚配
这里没有指定字符串序列也叫
否认式向后婚配
处理不以某字符串末端:
(?<!str)$
这里用了以下几个标记:
-
?<!
否认式向后查询 -
$
是不是末端
示例:
不以 end 末端
/.*(?<!end)$/
网络几个 ?
元字符用法
(?:str) 非捕捉组
(?=str) 肯定式向前查找
(?!str) 否认式向前查找
(?<=str) 肯定式向后查找
(?<!str) 否认式向后查找
参考地点: