3

jshintを使用してJavascriptコードをクリーンアップしようとしています。使用されているサードパーティのスクリプトで、jshintは次の行のエスケープされていないjavascriptについて文句を言います。

var cleanString = deaccentedString.replace(/([|()[{.+*?^$\\])/g,"\\$1");

この正規表現が何をするのかも理解したいのですが、わかりません。誰かがこれが何のためにあるのか、そしてクリーンアップされた方法でそれを書く方法を教えてもらえますか?

ヒントをありがとうございます。

4

2 に答える 2

5

次の文字のいずれかに一致します:|()[{.+*?^$\そして、エスケープされた対応する文字(バックスラッシュとその文字)に置き換えます。

多くの正規表現の方言では、エスケープされていない方言を[文字クラス内に含めることは合法ですが、他の方言ではエラーが発生する可能性があるため、次のことを試してください。

var cleanString = deaccentedString.replace(/[|()\[{.+*?^$\\]/g,"\\$0");

(不要なキャプチャグループも削除される可能性があります。)

于 2011-06-06T13:49:33.003 に答える
3

正規表現は、「特殊」文字を選択し、前にバックスラッシュを詰め込んでいます。私の推測では、それはキャラクタークラスの裸の「[」が好きではないということですが、それは単なる推測です。あなたは試すかもしれません:

var cleanString = deaccentedString.replace(/([|()\[{.+*?^$\\])/g,"\\$1");

もう1つの選択肢は、jshintの言うことを気にしないことです。結局のところ、これは単なる助言ツールであり、コードが実際にすべてのブラウザで正しく機能する場合、アドバイスは明らかに悪いです:-)

于 2011-06-06T13:49:13.300 に答える