零宽断言在低版本Safri的兼容处理

零宽断言在低版本Safri的兼容处理

在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了

如若在Safari浏览器看到了如下报错,导致整个页面都是空白状态,不要怀疑,就是你的正则使用了零宽断言

SyntaxError: Invalid regular expression: invalid group specifier name

解决方案:

  • 不再使用零宽断言即可

  • 使用new RegExp

1
2
3
4
5
6
7
8
9
10
// 错误格式
let regExp = /(?<!\d*\.\d*)(\d)(?=(\d{3})+(?!\d))/g;

// 修改为下面的格式即可
let regExp = new RegExp("(?<!\\d*\\.\\d*)(\\d)(?=(\\d{3})+(?!\\d))", 'g');

注意两点:
1.//包裹改为用""包裹
2.\d等元字符改为\\d

参考文献

【正则】正则表达式-零宽断言(?=,?<=,?!,?<!)及常见报错