The regex is constructed on the fly, but I've output it to firebug:
(.{1,38})(+|$\n?)
the error is
invalid quantifier +|$\n?)
I'm not sure where to start.
The actual code is:
var re = top.RegExp;
var regex = new re("(.{1," + len + "})(+|$\\n?)", "gm");
UPDATE: Per Bennor McCarthy's instructions, I changed the code to this:
var regex = new re("(.{1," + len + "})(\+|\$\\n?)", "gm");
Firebug still tells me this:
invalid quantifier +|$\n?)
[Break on this error] var regex = new re("(.{1," + len + "})(\+|\$\\n?)", "gm");
ANOTHER UPDATE Looks Like I had to double slash it and this solved the problem!
var regex = new re("(.{1," + len + "})(\\+|\\$\\n?)", "gm");
The problem is the +, which is a quantifier you need to escape.
Use this instead:
/(.{1,38})(\+|$\n?)/
or inside a string:
"(.{1,38})(\\+|$\\n?)"
If you want to match the literal $ followed by a newline, you need to escape the $ with \
(or \\
inside a string - see my last comment below this for an explanation).
Here's some information on quantifiers.
A quantifier means "how many". The most common is "*" which means zero or more. The quantifier "+" means one or more.
When you get an error about an illegal quantifier it almost always means you have a quantifier where it doesn't belong. For example, since they mean "how many" they must obviously refer to something. If you place one at the start of a pattern or group the regex is thinking "how many _of what?
In your specific case you have a "+" immediately after the grouping character "(" which is why you get the error. You need to either escape the "+" so it isn't treated as a quantifier or put some character or group you want to match in front of it. In your case it is probably the first if you are trying to match an actual "+" character.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With