关于正则表达式的零宽断言正则的详细说明,可以参考这几篇文章:
这里主要记录一下反向断言到了Chrome 62才支持,参考:
ECMAScript2018才开始支持 lookbehind.
(补充:named capturing group也是类似的情况: stackoverflow.com/questions/2…)
chrome62版本之前的正则零宽反向断言,JS不支持。(补充一下,62之前的Chrome同样不支持具名捕获组named capturing group) 报错如下:
替代方案,可以参考:
stackoverflow.com/questions/7…
也可以用普通的方式分成几步实现同样的功能。
比如
let regExp = new RegExp('(?<=get\\()[A-Za-z0-9_\\$]+(?=\\))');
let ret = 'get(key)'.match(regExp);
console.log(ret[0]); // 62版本之后可以执行出结果 'key',62版本之前会报错。
可以替换成:
let regExp = new RegExp('[get\\(][A-Za-z0-9_\\$]+[\\)]{1}');
let ret = 'get(key)'.match(regExp); // 结果是 '(key)'
let _value = ret[0].substring(1, attr[0].length - 1); // 去掉括号
console.log(_value);