首先要说的是js正则表达式只支持零宽先行断言,而零宽先行断言又可以分为正向零宽先行断言(判断字符后面必须匹配regexp)和负向零宽先行断言(判断字符后面不能匹配regexp)
- 正向零宽先行断言
例:
var str = 'abABb'
var regexp = /ab(?=[A-Z])/
str.match(regexp)
得到的结果为:
2. 负向零宽先行断言
var str = 'abABb'
var regexp = /ab(?![A-Z])/
str.match(regexp)
返回的结果是null,这是match方法没有匹配到结果时的返回值。
由此可以看到,js中的零宽断言只能实现断言位置后面能不能匹配某个regexp,不能判断断言位置的前面能不能匹配某个regexp,即不支持零宽后发断言。