-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathprefer-character-class.ts
87 lines (77 loc) · 2.65 KB
/
prefer-character-class.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { SnapshotRuleTester } from "eslint-snapshot-rule-tester"
import rule from "../../../lib/rules/prefer-character-class"
const tester = new SnapshotRuleTester({
languageOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
})
tester.run("prefer-character-class", rule as any, {
valid: [
`/regexp/`,
`/[regexp]/`,
`/reg|exp/`,
String.raw`/(?:a|b)/`,
String.raw`/(?:a|b|c\b)/`,
String.raw`/(?:[ab]|c\b)/`,
String.raw`/(?:[ab]|cd)/`,
String.raw`/(?:[ab]|(c))/`,
{ code: String.raw`/a|b|c|\d/`, options: [{ minAlternatives: 5 }] },
],
invalid: [
String.raw`/a|b|c|\d/`,
String.raw`/(a|b|c|\d)/`,
String.raw`/(?:a|b|c|\d)/`,
String.raw`/(?=a|b|c|\d)/`,
String.raw`/(?<=a|b|c|\d)/`,
String.raw`/a|b|c|\d|[d-f]/`,
String.raw`/a|-|c|\d|c|[-d-f]/`,
String.raw`/a|[.]|c|\d|c|[-d-f]/`,
String.raw`const s = "a|b|\\d|c"
new RegExp(s)`,
String.raw`const s = "a|b|"+"c"
new RegExp(s)`,
String.raw`/a|b|c/`,
String.raw`/]|a|b/`,
String.raw`/-|a|c/`,
String.raw`/a|-|c/`,
String.raw`/a|[-]|c/`,
String.raw`/(?:a|b|c)/`,
String.raw`/(a|b|c)/`,
String.raw`/(?<name>a|b|c)/`,
String.raw`/(?:a|b|c|d\b)/`,
String.raw`/(?:a|b\b|[c]|d)/`,
String.raw`/(?:a|\w|\s|["'])/`,
String.raw`/(?:\w|-|\+|\*|\/)+/`,
String.raw`/(?=a|b|c)/`,
String.raw`/(?!a|b|c)/`,
String.raw`/(?<=a|b|c)/`,
String.raw`/(?<!a|b|c)/`,
String.raw`/(?=a|b|c|dd|e)/`,
String.raw`/(?!a|b|c|dd|e)/`,
String.raw`/(?<=a|b|c|dd|e)/`,
String.raw`/(?<!a|b|c|dd|e)/`,
String.raw`/[abc]|d/`,
String.raw`/[abc]|d|ee/`,
// always merge non-disjoint
String.raw`/(?:a|\w|b\b)/`,
String.raw`/(?:\w|a|b\b)/`,
String.raw`/(?:\w|b\b|a)/`,
// always do match all
String.raw`/(?:\s|\S|b\b)/`,
String.raw`/(?:\w|\D|b\b)/`,
String.raw`/(?:\w|\W|b\b)/`,
String.raw`/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/`,
String.raw`/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/`,
String.raw`/1|2|3|[\w--\d]/v`,
String.raw`/1|&|&|[\w--\d]/v`,
String.raw`/1|~|~|[\w--\d]|[\q{abc}]/v`,
// only report affected alternatives
String.raw`/foo|bar|a|b|c|baz/`,
// minAlternatives option
{
code: String.raw`/(?:a|b)/`,
options: [{ minAlternatives: 2 }],
},
],
})