Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix: no-misleading-character-class crash on invalid regex (fixes #12169…
- Loading branch information
|
|
@@ -130,12 +130,6 @@ module.exports = { |
|
|
* @returns {void} |
|
|
*/ |
|
|
function verify(node, pattern, flags) { |
|
|
const patternNode = parser.parsePattern( |
|
|
pattern, |
|
|
0, |
|
|
pattern.length, |
|
|
flags.includes("u") |
|
|
); |
|
|
const has = { |
|
|
surrogatePairWithoutUFlag: false, |
|
|
combiningClass: false, |
|
|
@@ -144,6 +138,20 @@ module.exports = { |
|
|
regionalIndicatorSymbol: false, |
|
|
zwj: false |
|
|
}; |
|
|
let patternNode; |
|
|
|
|
|
try { |
|
|
patternNode = parser.parsePattern( |
|
|
pattern, |
|
|
0, |
|
|
pattern.length, |
|
|
flags.includes("u") |
|
|
); |
|
|
} catch (e) { |
|
|
|
|
|
// Ignore regular expressions with syntax errors |
|
|
return; |
|
|
} |
|
|
|
|
|
visitRegExpAST(patternNode, { |
|
|
onCharacterClassEnter(ccNode) { |
|
|
|
|
|
@@ -63,7 +63,11 @@ ruleTester.run("no-misleading-character-class", rule, { |
|
|
|
|
|
// Ignore solo ZWJ. |
|
|
"var r = /[\\u200D]/", |
|
|
"var r = /[\\u200D]/u" |
|
|
"var r = /[\\u200D]/u", |
|
|
|
|
|
// don't report and don't crash on invalid regex |
|
|
"var r = new RegExp('[Á] [ ');", |
|
|
"var r = RegExp('{ [Á]', 'u');" |
|
|
], |
|
|
invalid: [ |
|
|
|
|
|
|