2

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

4

3 回答 3

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"

最后,您可以这样做:

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

mystring.split("}").join("").split("{").join("");
于 2012-10-08T17:59:26.423 回答
2

你可以试试

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

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

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

{= \u007B
}=\u007D

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

于 2012-10-08T18:03:42.063 回答
1

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

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

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

mystring.split('{').join('');
于 2012-10-08T18:04:28.240 回答