Skip to content

Commit 727bff2

Browse files
Improved no-assertion-capturing-group (#188)
1 parent 653b5fe commit 727bff2

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

docs/rules/no-assertion-capturing-group.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var foo = /(a)/;
2525
var foo = /a(?:\b)/;
2626
var foo = /a(?:$)/;
2727
var foo = /(?:^)a/;
28+
var foo = /(?:^|b)a/;
2829

2930
/* ✗ BAD */
3031
var foo = /a(\b)/;

lib/rules/no-assertion-capturing-group.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { isZeroLength } from "regexp-ast-analysis"
12
import type { RegExpVisitor } from "regexpp/visitor"
23
import type { RegExpContext } from "../utils"
34
import { createRule, defineRegexpVisitor } from "../utils"
@@ -24,11 +25,7 @@ export default createRule("no-assertion-capturing-group", {
2425
}: RegExpContext): RegExpVisitor.Handlers {
2526
return {
2627
onCapturingGroupEnter(cgNode) {
27-
if (
28-
cgNode.alternatives.every((alt) =>
29-
alt.elements.every((e) => e.type === "Assertion"),
30-
)
31-
) {
28+
if (isZeroLength(cgNode)) {
3229
context.report({
3330
node,
3431
loc: getRegexpLocation(cgNode),

tests/lib/rules/no-assertion-capturing-group.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const tester = new RuleTester({
99
})
1010

1111
tester.run("no-assertion-capturing-group", rule as any, {
12-
valid: ["/(a)/", "/a(\\bb)/"],
12+
valid: ["/(a)/", "/a(\\bb)/", "/a(\\b|b)/"],
1313
invalid: [
1414
{
1515
code: "/a(\\b)/",
@@ -41,5 +41,19 @@ tester.run("no-assertion-capturing-group", rule as any, {
4141
},
4242
],
4343
},
44+
{
45+
code: "/()a/",
46+
errors: [
47+
{
48+
message: "Unexpected capture assertions.",
49+
column: 2,
50+
endColumn: 4,
51+
},
52+
],
53+
},
54+
{
55+
code: "/(\\b\\b|(?:\\B|$))a/",
56+
errors: ["Unexpected capture assertions."],
57+
},
4458
],
4559
})

0 commit comments

Comments
 (0)