ESLint不识别正则表达式后行断言问题咨询
问题根源:ECMAScript版本配置不兼容
这问题跟你的正则表达式本身完全没问题——是ESLint的ECMAScript版本配置过低导致的!
为什么前瞻正常,后行报错?
- 前瞻断言(
(?=...))是ES5就已经支持的正则特性,所以你的配置里ecmaVersion: 5能正常识别它。 - 后行断言(
(?<=...))是ES2018(ES9)才新增的语法,ESLint在ecmaVersion: 5的模式下,会严格按照ES5的语法规则校验代码,自然会把后行断言判定为无效正则。
解决方案:升级ECMAScript版本配置
只需要把你的ESLint配置里的parserOptions.ecmaVersion从5改成2018(或更高版本,比如"latest"),就能让ESLint识别后行断言了。修改后的配置片段如下:
{ "parserOptions": { "ecmaVersion": 2018, // 替换原来的5 "sourceType": "script", "ecmaFeatures": {} }, // 其余规则保持不变... }
修改完成后,ESLint就不会再对/(?<=a)b/报错,同时这个正则在支持ES2018及以上的JavaScript环境(比如现代浏览器、Node.js 10+)里也能正常工作。
内容的提问来源于stack exchange,提问作者customcommander
相关产品推荐
相关产品推荐

