- 2006-04-21

Logged In: YES
user_id=850577

Actually this will occur for any character which is a
regular expression operator (eg. \,.*()+$&{}[]^:). I
whipped up a quick regular expression escape function to fix
this.

There's probably a better way, but this works for me:

function regExpEscape(str) {
var result = "";
if(str != null && str.length > 0) {
var i,chr;
for (i = 0; i < str.length; i++) {
chr = str.charAt(i);
if (chr == '.'){result+="\\.";}
else if (chr == '\\'){result+="\\\\";}
else if (chr == '?'){result+="\\?";}
else if (chr == '*'){result+="\\*";}
else if (chr == '+'){result+="\\+";}
else if (chr == '&'){result+="\\&";}
else if (chr == ':'){result+="\\:";}
else if (chr == '{'){result+="\\{";}
else if (chr == '}'){result+="\\}";}
else if (chr == '['){result+="\\[";}
else if (chr == ']'){result+="\\]";}
else if (chr == '('){result+="\\(";}
else if (chr == ')'){result+="\\)";}
else if (chr == '^'){result+="\\^";}
else if (chr == '$'){result+="\\$";}
else{result+=chr;}
}
}
return result;

}//regExpEscape()

Then...

var escapedUserInput = regExpEscape(userInput);
re1m = new RegExp("^([ \"\&gt;\&lt;\-]*)("+escapedUserInput+")","i");
re2m = new RegExp("([ \"\&gt;\&lt;\-]+)("+escapedUserInput+")","i");
re1 = new RegExp("^([ \"\}\{\-]*)("+escapedUserInput+")","gi");
re2 = new RegExp("([ \"\}\{\-]+)("+escapedUserInput+")","gi");