diff --git a/acorn.js b/acorn.js index 63abcce77f..31935f41a5 100644 --- a/acorn.js +++ b/acorn.js @@ -773,11 +773,11 @@ // Need to use `readWord1` because '\uXXXX' sequences are allowed // here (don't ask). var mods = readWord1(); - if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regexp flag"); + if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regular expression flag"); try { var value = new RegExp(content, mods); } catch (e) { - if (e instanceof SyntaxError) raise(start, e.message); + if (e instanceof SyntaxError) raise(start, "Error parsing regular expression: " + e.message); raise(e); } return finishToken(_regexp, value); diff --git a/acorn_loose.js b/acorn_loose.js index 79cc15f616..1c6fb46fd6 100644 --- a/acorn_loose.js +++ b/acorn_loose.js @@ -106,6 +106,8 @@ } else if (/unexpected character/i.test(msg)) { pos++; replace = false; + } else if (/regular expression/i.test(msg)) { + replace = true; } else { throw e; } diff --git a/index.html b/index.html index edbc4ca823..0e2d6e6361 100644 --- a/index.html +++ b/index.html @@ -536,11 +536,11 @@ since a '/' inside a '[]' set does not end the expression.

var content = input.slice(start, tokPos); ++tokPos;

Need to use readWord1 because '\uXXXX' sequences are allowed here (don't ask).

    var mods = readWord1();
-    if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regexp flag");
+    if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regular expression flag");
     try {
       var value = new RegExp(content, mods);
     } catch (e) {
-      if (e instanceof SyntaxError) raise(start, e.message);
+      if (e instanceof SyntaxError) raise(start, "Error parsing regular expression: " + e.message);
       raise(e);
     }
     return finishToken(_regexp, value);