cus*_*der 5 javascript regex eslint
我有一个带有后视断言的正则表达式,ESLint 似乎认为它无效。然而,前瞻断言很好。
我可以使用最新版本的 ESLint(我使用过在线演示)以及非常简单和人为的示例来重现这个问题。
前瞻断言:匹配b(且仅b)如果后跟d:
'bd'.match(/b(?=d)/) //=> ['b']
'be'.match(/b(?=d)/) //=> null
ESLint 识别/b(?=d)/为有效的正则表达式:
后视断言:匹配b(且仅b)如果前面有a:
'ab'.match(/(?<=a)b/) //=> ['b']
'eb'.match(/(?<=a)b/) //=> null
ESLint 无法识别/(?<=a)b/为有效的正则表达式:
问题:我的正则表达式有什么问题导致 ESLint 抱怨?
上面演示中使用的 ESLint 配置:
'bd'.match(/b(?=d)/) //=> ['b']
'be'.match(/b(?=d)/) //=> null
您可以参考指定解析器选项参考:
ecmaVersion- 设置为 3、5(默认)、6、7、8、9、10、11 或 12 以指定要使用的 ECMAScript 语法版本。您还可以设置为 2015 年(与 6 相同)、2016 年(与 7 相同)、2017 年(与 8 相同)、2018 年(与 9 相同)、2019 年(与 10 相同)、2020 年(与 11 相同)或 2021 年(与 12) 相同,使用基于年份的命名。
如您所见,默认值为5,表示仅支持 ES5。Lookbehinds符合 ECMAScript 2018,因此您需要确保ecmaVersion至少设置为9:
"parserOptions": {
        "ecmaVersion": 9,
        "sourceType": "script",
        "ecmaFeatures": {}
    },
| 归档时间: | 
 | 
| 查看次数: | 151 次 | 
| 最近记录: |