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"

最後に、これを行うことができます:

正規表現が本当にうまくいかない場合、これはすべて{のと を置き換えます}。パフォーマンスを考えると、おそらく恐ろしい解決策ですが...

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

あなたは試すことができます

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

これは実際のシンボルではなくユニコードを使用するため、パッカーが混乱することはありません。1 つのステートメントで複数の文字を置き換えたい場合は、"or" パイプを使用できます。

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

{= \u007B
}=\u007D

Unicode コードの詳細については、http:
//www.unicode.org/charts/PDF/U0000.pdfを参照してください。

于 2012-10-08T18:03:42.063 に答える
1

質問を読み直した後、ミニファイアー/パッカーのバグを見つけたようです。私の最初の提案は、これらの問題のないより優れた最小化ツールを使用することですが、使用しているものに行き詰まっている場合は、正規表現でUnicode エスケープ シーケンスを使用してみてください。

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

または、次のことを試すこともできString.prototype.splitますArray.prototype.join

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