正则表达式-零宽断言

阅读: 4021    发布时间: 2018-01-29 11:28:54

有时候我们想查找在某些内容(但并不包括这些内容)之前或之后的东西,就像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。

比如我们想查找以“ing”结尾的单词,但是我们并不想查找ing本身,比如“singing”,我们只想查找“sing”,只是查找的“sing”必须以ing结尾,正则表达式为“\b\w+(?=ing\b)”

(?=exp)”也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp

var patt=/\b\w+(?=ing\b)/g
var str="I'm singing while you're dancing"
console.log(str.match(patt))    // 匹配到sing 和 danc


"(?<=exp)" 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。

var patt=/(?<=\bre)\w+\b/
var str="reading a book"
console.log(str.match(patt))   //匹配到ading

-END-