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