js:正则表达式中的特殊字符

时间:2012-10-08 17:57:40

标签: javascript regex

在我的正则表达式中,我尝试从字符串中删除所有“{”和“}”。 使用packer / minimizer脚本推送脚本会打破它们。 这就是为什么我想知道一种更好,更兼容的写作方式: mystring.replace(/\{/g,"");

3 个答案:

答案 0 :(得分:3)

您可以使用字符串而不是正则表达式。我不确定这是否“更好”,但它不应该在缩小时破坏。如果您提供缩小的示例,我们可以帮助您。

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

修改

如果花括号引起问题,也许这会起作用......

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

来自控制台的示例......

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

最后,你可以这样做:

如果正则表达式真的不适合你,这将取代所有{} 考虑到性能,这可能是一个可怕的解决方案,但是......

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

答案 1 :(得分:2)

你可以尝试

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

这使用unicode而不是实际符号,因此您的打包者不会感到困惑。如果要在单个语句中替换多个字符,可以使用"或"管:

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

{ = \u007B
} = \u007D

有关更多unicode代码,请参阅:
http://www.unicode.org/charts/PDF/U0000.pdf

答案 2 :(得分:1)

重新阅读问题之后,听起来你发现了minifier / packer的错误。我的第一个建议是使用一个没有这些问题的更好的最小化器,但是如果你坚持使用你正在使用的东西,你可以尝试在正则表达式中使用unicode escape sequence

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

或者,您可以尝试String.prototype.splitArray.prototype.join

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