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