有时候我们想查找在某些内容(但并不包括这些内容)之前或之后的东西,就像\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