]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-invalid-regexp.js
6484db816db5cdc1781b66f377acaaa2c28da7ea
2 * @fileoverview Validate strings passed to the RegExp constructor
3 * @author Michael Ficarra
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/no-invalid-regexp"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 const ruleTester
= new RuleTester();
17 ruleTester
.run("no-invalid-regexp", rule
, {
24 "new RegExp('.', 'im')",
25 "global.RegExp('\\\\')",
27 "new RegExp('.', 'y')",
28 "new RegExp('.', 'u')",
29 "new RegExp('.', 'yu')",
30 "new RegExp('/', 'yu')",
31 "new RegExp('\\/', 'yu')",
32 "new RegExp('\\\\u{65}', 'u')",
33 "new RegExp('\\\\u{65}*', 'u')",
34 "new RegExp('[\\\\u{0}-\\\\u{1F}]', 'u')",
35 "new RegExp('.', 's')",
36 "new RegExp('(?<=a)b')",
37 "new RegExp('(?<!a)b')",
38 "new RegExp('(?<a>b)\\k<a>')",
39 "new RegExp('(?<a>b)\\k<a>', 'u')",
40 "new RegExp('\\\\p{Letter}', 'u')",
43 "RegExp('{', flags)", // valid without the "u" flag
44 "new RegExp('{', flags)", // valid without the "u" flag
45 "RegExp('\\\\u{0}*', flags)", // valid with the "u" flag
46 "new RegExp('\\\\u{0}*', flags)", // valid with the "u" flag
48 code
: "RegExp('{', flags)", // valid without the "u" flag
49 options
: [{ allowConstructorFlags
: ["u"] }]
52 code
: "RegExp('\\\\u{0}*', flags)", // valid with the "u" flag
53 options
: [{ allowConstructorFlags
: ["a"] }]
57 "new RegExp('(?<\\\\ud835\\\\udc9c>.)', 'g')",
58 "new RegExp('(?<\\\\u{1d49c}>.)', 'g')",
59 "new RegExp('(?<𝒜>.)', 'g');",
60 "new RegExp('\\\\p{Script=Nandinagari}', 'u');",
62 // allowConstructorFlags
64 code
: "new RegExp('.', 'g')",
65 options
: [{ allowConstructorFlags
: [] }]
68 code
: "new RegExp('.', 'g')",
69 options
: [{ allowConstructorFlags
: ["a"] }]
72 code
: "new RegExp('.', 'a')",
73 options
: [{ allowConstructorFlags
: ["a"] }]
76 code
: "new RegExp('.', 'ag')",
77 options
: [{ allowConstructorFlags
: ["a"] }]
80 code
: "new RegExp('.', 'ga')",
81 options
: [{ allowConstructorFlags
: ["a"] }]
84 code
: "new RegExp('.', 'a')",
85 options
: [{ allowConstructorFlags
: ["a", "z"] }]
88 code
: "new RegExp('.', 'z')",
89 options
: [{ allowConstructorFlags
: ["a", "z"] }]
92 code
: "new RegExp('.', 'az')",
93 options
: [{ allowConstructorFlags
: ["a", "z"] }]
96 code
: "new RegExp('.', 'za')",
97 options
: [{ allowConstructorFlags
: ["a", "z"] }]
100 code
: "new RegExp('.', 'agz')",
101 options
: [{ allowConstructorFlags
: ["a", "z"] }]
106 code
: "RegExp('[');",
108 messageId
: "regexMessage",
109 data
: { message
: "Invalid regular expression: /[/: Unterminated character class" },
110 type
: "CallExpression"
114 code
: "RegExp('.', 'z');",
116 messageId
: "regexMessage",
117 data
: { message
: "Invalid flags supplied to RegExp constructor 'z'" },
118 type
: "CallExpression"
122 code
: "RegExp('.', 'a');",
125 messageId
: "regexMessage",
126 data
: { message
: "Invalid flags supplied to RegExp constructor 'a'" },
127 type
: "CallExpression"
131 code
: "new RegExp('.', 'a');",
132 options
: [{ allowConstructorFlags
: [] }],
134 messageId
: "regexMessage",
135 data
: { message
: "Invalid flags supplied to RegExp constructor 'a'" },
136 type
: "NewExpression"
140 code
: "new RegExp('.', 'z');",
141 options
: [{ allowConstructorFlags
: ["a"] }],
143 messageId
: "regexMessage",
144 data
: { message
: "Invalid flags supplied to RegExp constructor 'z'" },
145 type
: "NewExpression"
149 code
: "new RegExp('.', 'az');",
150 options
: [{ allowConstructorFlags
: ["z"] }],
152 messageId
: "regexMessage",
153 data
: { message
: "Invalid flags supplied to RegExp constructor 'a'" },
154 type
: "NewExpression"
158 code
: "new RegExp(')');",
160 messageId
: "regexMessage",
161 data
: { message
: "Invalid regular expression: /)/: Unmatched ')'" },
162 type
: "NewExpression"
166 code
: String
.raw
`new RegExp('\\a', 'u');`,
168 messageId
: "regexMessage",
169 data
: { message
: "Invalid regular expression: /\\a/u: Invalid escape" },
170 type
: "NewExpression"
174 code
: String
.raw
`new RegExp('\\a', 'u');`,
175 options
: [{ allowConstructorFlags
: ["u"] }],
177 messageId
: "regexMessage",
178 data
: { message
: "Invalid regular expression: /\\a/u: Invalid escape" },
179 type
: "NewExpression"
183 code
: String
.raw
`RegExp('\\u{0}*');`,
185 messageId
: "regexMessage",
186 data
: { message
: "Invalid regular expression: /\\u{0}*/: Nothing to repeat" },
187 type
: "CallExpression"
191 code
: String
.raw
`new RegExp('\\u{0}*');`,
193 messageId
: "regexMessage",
194 data
: { message
: "Invalid regular expression: /\\u{0}*/: Nothing to repeat" },
195 type
: "NewExpression"
199 code
: String
.raw
`new RegExp('\\u{0}*', '');`,
201 messageId
: "regexMessage",
202 data
: { message
: "Invalid regular expression: /\\u{0}*/: Nothing to repeat" },
203 type
: "NewExpression"
207 code
: String
.raw
`new RegExp('\\u{0}*', 'a');`,
208 options
: [{ allowConstructorFlags
: ["a"] }],
210 messageId
: "regexMessage",
211 data
: { message
: "Invalid regular expression: /\\u{0}*/: Nothing to repeat" },
212 type
: "NewExpression"
216 code
: String
.raw
`RegExp('\\u{0}*');`,
217 options
: [{ allowConstructorFlags
: ["a"] }],
219 messageId
: "regexMessage",
220 data
: { message
: "Invalid regular expression: /\\u{0}*/: Nothing to repeat" },
221 type
: "CallExpression"
225 // https://github.com/eslint/eslint/issues/10861
227 code
: String
.raw
`new RegExp('\\');`,
229 messageId
: "regexMessage",
230 data
: { message
: "Invalid regular expression: /\\/: \\ at end of pattern" },
231 type
: "NewExpression"