ledy
ledy

Reputation: 1617

js: special char in regex

in my regular expression, I tried to remove all "{" and "}"s from a string. Pushing the script with packer/minimizer scripts, breaks them. That's why I'd like to know about a better and more compatible way of writing: mystring.replace(/\{/g,"");?

Upvotes: 2

Views: 205

Answers (3)

Kyle
Kyle

Reputation: 22268

You can just use a string instead of a regex. I'm not sure if this is "better" but it should not break when minified. If you provide the minified example, we may be able to help with that.

mystring.replace("}", "").replace("{", "");

Edit:

If the curly bracket is causing the problem, perhaps this would work...

var reg = new RegExp("\\{|\\}", "g");
mystring.replace(reg, "");

Example from the console...

> var mystring = "test{foo}bar{baz}";
> var reg = new RegExp("\\{|\\}", "g");
> mystring.replace(reg, "");
 "testfoobarbaz"

Lastly, you could do this:

If a regex really wont work for you, this will replace all {'s and }'s It is probably a horrible solution, considering performance, but...

mystring.split("}").join("").split("{").join("");

Upvotes: 3

JDB
JDB

Reputation: 25810

You could try

mystring.replace(/\u007B/g,"");

This uses unicode rather than the actual symbol, so your packer won't get confused. If you want to replace more than one character in a single statement, you can use the "or" pipe:

mystring.replace(/\u007B|\u007D/g,"");

{ = \u007B
} = \u007D

For more unicode codes see:
http://www.unicode.org/charts/PDF/U0000.pdf

Upvotes: 2

zzzzBov
zzzzBov

Reputation: 179086

After re-reading the question, it sounds like you've found a bug with the minifier/packer. My first suggestion would be to use a better minimizer that doesn't have these issues, but if you're stuck with what you're using, you could try using the unicode escape sequence in the regular expression:

mystring.replace(/\u007b/g, '');

Alternatively, you could try String.prototype.split and Array.prototype.join:

mystring.split('{').join('');

Upvotes: 1

Related Questions