10
votes
var badCode = "\(INST1,\\[0,";
var regex = new RegExp(badCode, "igm");

gets "unterminated character class" error.

How to fix?

TIA

trying suggestions from responders to this post, please see the following screen prints (you might have to right-click on images and open in new tab to make legible): note values of new_bad_thing (equiv of badCode above)

and here is the screen print when I hit the run button (please note the error message):

enter image description here

2
I get SyntaxError: Invalid regular expression: /(INST1,\[0,/: Unterminated group, i.e. the parenthesis (char 1 in string) doesn't have a matching ). It is being treated as a group as "\(" === "(", you need to write "\\(" to get \(. - Paul S.

2 Answers

10
votes

Put another backslash at badCode:

var badCode = "\\(INST1,\\[0,";
var regex = new RegExp(badCode, "igm");

since you need one to escape ( inside the regex itself (signal it that it's a literal parentheis) and one escape for javascript.

3
votes

No, it gets "unterminated parenthetical", because you've forgotten to escape the backslash. Why not use a regular expression literal?

var regex = /\(INST1,\[0,/igm;