私の正規表現では、文字列からすべての「{」と「}」を削除しようとしました。パッカー/ミニマイザー スクリプトを使用してスクリプトをプッシュすると、それらが壊れます。そのため、より適切で互換性のある書き方について知りたいの
mystring.replace(/\{/g,"");
です。
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("");
あなたは試すことができます
mystring.replace(/\u007B/g,"");
これは実際のシンボルではなくユニコードを使用するため、パッカーが混乱することはありません。1 つのステートメントで複数の文字を置き換えたい場合は、"or" パイプを使用できます。
mystring.replace(/\u007B|\u007D/g,"");
{
= \u007B
}
=\u007D
Unicode コードの詳細については、http:
//www.unicode.org/charts/PDF/U0000.pdfを参照してください。
質問を読み直した後、ミニファイアー/パッカーのバグを見つけたようです。私の最初の提案は、これらの問題のないより優れた最小化ツールを使用することですが、使用しているものに行き詰まっている場合は、正規表現でUnicode エスケープ シーケンスを使用してみてください。
mystring.replace(/\u007b/g, '');
または、次のことを試すこともできString.prototype.split
ますArray.prototype.join
。
mystring.split('{').join('');