@@ -57,6 +57,12 @@ ruleTester.run("no-invalid-regexp", rule, {
5757 options : [ { allowConstructorFlags : [ "a" ] } ]
5858 } ,
5959
60+ // unknown pattern
61+ "new RegExp(pattern, 'g')" ,
62+ "new RegExp('.' + '', 'g')" ,
63+ "new RegExp(pattern, '')" ,
64+ "new RegExp(pattern)" ,
65+
6066 // ES2020
6167 "new RegExp('(?<\\\\ud835\\\\udc9c>.)', 'g')" ,
6268 "new RegExp('(?<\\\\u{1d49c}>.)', 'g')" ,
@@ -87,6 +93,14 @@ ruleTester.run("no-invalid-regexp", rule, {
8793 code : "new RegExp('.', 'ga')" ,
8894 options : [ { allowConstructorFlags : [ "a" ] } ]
8995 } ,
96+ {
97+ code : "new RegExp(pattern, 'ga')" ,
98+ options : [ { allowConstructorFlags : [ "a" ] } ]
99+ } ,
100+ {
101+ code : "new RegExp('.' + '', 'ga')" ,
102+ options : [ { allowConstructorFlags : [ "a" ] } ]
103+ } ,
90104 {
91105 code : "new RegExp('.', 'a')" ,
92106 options : [ { allowConstructorFlags : [ "a" , "z" ] } ]
@@ -237,6 +251,34 @@ ruleTester.run("no-invalid-regexp", rule, {
237251 data : { message : "Invalid regular expression: /\\/: \\ at end of pattern" } ,
238252 type : "NewExpression"
239253 } ]
254+ } ,
255+
256+ // https://github.com/eslint/eslint/issues/16573
257+ {
258+ code : "RegExp(')' + '', 'a');" ,
259+ errors : [ {
260+ messageId : "regexMessage" ,
261+ data : { message : "Invalid flags supplied to RegExp constructor 'a'" } ,
262+ type : "CallExpression"
263+ } ]
264+ } ,
265+ {
266+ code : "new RegExp('.' + '', 'az');" ,
267+ options : [ { allowConstructorFlags : [ "z" ] } ] ,
268+ errors : [ {
269+ messageId : "regexMessage" ,
270+ data : { message : "Invalid flags supplied to RegExp constructor 'a'" } ,
271+ type : "NewExpression"
272+ } ]
273+ } ,
274+ {
275+ code : "new RegExp(pattern, 'az');" ,
276+ options : [ { allowConstructorFlags : [ "a" ] } ] ,
277+ errors : [ {
278+ messageId : "regexMessage" ,
279+ data : { message : "Invalid flags supplied to RegExp constructor 'z'" } ,
280+ type : "NewExpression"
281+ } ]
240282 }
241283 ]
242284} ) ;
0 commit comments