1.问题:火狐浏览器报错
2.原因:
旧版火狐不支持正则,先行断言(lookahead),先行断言的部分需要单独取出来进行判断,因此正则表达式要使用正则对象的方式 new RegExp
火狐、IE、IOS不支持以下写法 常用零宽断言:
?! 零宽负向先行断言
?= 零宽先行断言
?<= 零宽后行断言
?<! 零宽负向后行断言
前瞻就是一种条件判断,好比if语句:
(?=exp)正向前瞻 匹配后面满足表达式exp的位置
(?!exp) 负向前瞻 匹配后面不满足表达式exp的位置
3.解决
let reg = /ab?<=cd/
// 改写成
let reg = new RegExp('ab(?<=cd)')