js使用正则,对前瞻断言和后瞻断言的理解(转发)
2020-08-14 本文已影响0人
AAA前端
[https://blog.csdn.net/example440982/article/details/85177133
]
断言写法
前瞻断言
(?=exp) 顺序肯定环视,表示所在位置右侧能够匹配exp
(?!exp) 顺序否定环视,表示所在位置右侧不能匹配exp
后瞻断言
(?<=exp) 逆序肯定环视,表示所在位置左侧能够匹配exp
(?<!exp) 逆序否定环视,表示所在位置左侧不能匹配exp
-
括号是必须的,写法: (?!=...)
-
有些语言并不完全支持,比如:javascript的正则并不支持后瞻断言表达式,使用了会报错的。
-
这里有坑,不要随便用后瞻断言,旧浏览器不支持
其中exp是一个正则表达式可以是子模式,如:(?=((exp))。
*环视也称断言;断言是不占用字符串的((?=exp)所以不能引用,exp是占用字符串的)
** 例子 **
var s="img.jpg,abc.gif,123.jpeg";
s.match(/\w*(?=\.gif)/);
结果:["abc"]
var a = 'http://ydqwytest.suolwei.cn/index.php?s=/Wechat/Commerce/Commerce/id/23524'
a.match(/(?<=id)[\/|=|&](\d*)/i)[1]
"23524"
js使用 后瞻断言 有坑