我有一个正则表达式,其中包含 ESLint 似乎不认为有效的后向断言。然而,前瞻断言是可以的。
我可以使用最新版本的 ESLint(我使用过在线演示)以及非常简单且人为的示例来重现此问题。
前瞻断言:匹配b
(且仅b
)如果后跟d
:
'bd'.match(/b(?=d)/) //=> ['b'] 'be'.match(/b(?=d)/) //=> null
ESLint 识别/b(?=d)/
为有效的正则表达式:
Lookbehind 断言:匹配b
(且仅b
)如果前面是a
:
'ab'.match(/(?<=a)b/) //=> ['b'] 'eb'.match(/(?<=a)b/) //=> null
ESLint 无法识别/(?<=a)b/
为有效的正则表达式:
问题:我的正则表达式有什么问题导致 ESLint 抱怨?
上面演示中使用的 ESLint 配置:
{
"parserOptions": {
"ecmaVersion": 5,
"sourceType": "script",
"ecmaFeatures": {}
},
"rules": {
"constructor-super": 2,
"for-direction": 2,
"getter-return": 2,
"no-async-promise-executor": 2,
"no-case-declarations": 2,
"no-class-assign": 2,
"no-compare-neg-zero": 2,
"no-cond-assign": 2,
"no-const-assign": 2,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-delete-var": 2,
"no-dupe-args": 2,
"no-dupe-class-members": 2,
"no-dupe-else-if": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-empty-character-class": 2,
"no-empty-pattern": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-semi": 2,
"no-fallthrough": 2,
"no-func-assign": 2,
"no-global-assign": 2,
"no-import-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-misleading-character-class": 2,
"no-mixed-spaces-and-tabs": 2,
"no-new-symbol": 2,
"no-obj-calls": 2,
"no-octal": 2,
"no-prototype-builtins": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-self-assign": 2,
"no-setter-return": 2,
"no-shadow-restricted-names": 2,
"no-sparse-arrays": 2,
"no-this-before-super": 2,
"no-undef": 2,
},
"env": {}
}
javascript正则表达式埃斯林特
qq_花开花谢_0
相关分类