pageClass | sidebarDepth | title | description | since |
---|---|---|---|---|
rule-details |
0 |
regexp/no-useless-non-capturing-group |
disallow unnecessary non-capturing group |
v0.4.0 |
💼 This rule is enabled in the ✅ plugin:regexp/recommended
config.
🔧 This rule is automatically fixable by the --fix
CLI option.
disallow unnecessary non-capturing group
This rule reports unnecessary non-capturing group
/* eslint regexp/no-useless-non-capturing-group: "error" */
/* ✓ GOOD */
var foo = /(?:abcd)?/.test(str)
var foo = /a(?:ab|cd)/.test(str)
/* ✗ BAD */
var foo = /(?:ab|cd)/.test(str)
var foo = /(?:abcd)/.test(str)
var foo = /(?:[a-d])/.test(str)
var foo = /(?:[a-d])|e/.test(str)
var foo = /(?:a|(?:b|c)|d)/.test(str)
{
"regexp/no-useless-non-capturing-group": ["error", {
"allowTop": "partial" // or "always" or "never"
}]
}
-
"allowTop"
: Whether a top-level non-capturing group is allowed. Defaults to"partial"
.Sometimes it's useful to wrap a whole pattern into a non-capturing group (e.g. when the pattern is used as a building block to construct more complex patterns). Use this option to allow top-level non-capturing groups.
-
"partial"
: Allows top-level non-capturing groups of patterns used as strings via.source
./* eslint regexp/no-useless-non-capturing-group: ["error", { allowTop: "partial" }] */ /* ✓ GOOD */ var foo = /(?:ab|cd)/; var bar = /(?:ab|cd)/; // We still don't know how it will be used. /* ✗ BAD */ /(?:ab|cd)/.test(str); /*-------*/ var baz = new RexExp(foo.source + 'e'); baz.test(str);
-
"always"
: Always allow top-level non-capturing groups./* eslint regexp/no-useless-non-capturing-group: ["error", { allowTop: "always" }] */ /* ✓ GOOD */ var foo = /(?:abcd)/.test(str) var foo = /(?:ab|cd)/.test(str) var foo = /(?:abcd)/.test(str) var foo = /(?:[a-d])/.test(str) /* ✗ BAD */ var foo = /(?:[a-d])|e/.test(str) var foo = /(?:a|(?:b|c)|d)/.test(str)
-
"never"
: Never allow top-level non-capturing groups./* eslint regexp/no-useless-non-capturing-group: ["error", { allowTop: "never" }] */ /* ✗ BAD */ var foo = /(?:ab|cd)/; var bar = /(?:ab|cd)/; /(?:ab|cd)/.test(str); /*-------*/ var baz = new RexExp(foo.source + 'e'); baz.test(str);
-
This rule was introduced in eslint-plugin-regexp v0.4.0