2017-06-22 7 views
0
str = "The stor-+)_y is someth12ing that [email protected]#ee3 de124scrib%^&ing 
becom5es life7 4 difficult"; 
console.log(str.replace(/\W/g,'')); 

Guysは、この正規表現を使用して非英数字以外の文字をすべて一致させていますが、 'underline'は選択できません。 私が知っているように、\ dはすべて数字のためのものです \ sは空白のために...だから、下線の文字は何ですか?Regexの "underline"と一致するシンボル

+0

あなたは '/ [\ W _]/g'を意味しますか? –

+0

* "アンダーラインを表す文字は何ですか?" *アンダーラインを表す文字はありません。アンダーラインはフォント効果です。あなたが*アンダースコア*にマッチする文字を尋ねるなら、それはアンダースコアです: '_'。 –

+0

そしてあなたが必要とする文字は*アンダーラインではなく*アンダースコア*と呼ばれます。 –

答えて

0

英数字以外の文字をすべて一致させるには、[^a-zA-Z0-9_]と同じテキストに一致するので、\Wは十分ではありません。 、あなたの正規表現で_に一致する文字クラスに_\Wを追加するには:

str = "The stor-+)_y is someth12ing that [email protected]#ee3 de124scrib%^&ing becom5es life7 4 difficult"; 
 
console.log(str.replace(/[\W_]+/g,''));

を削除しているので、1+ 1で連続しoccureencesを削除するには(+を定量化することをお勧めします行く)。

+0

これは、このように動作しています。しかし、あなたがなぜ[]と_の後に_を使うのか説明できますか?それは同じようですか?数字の '\ d'に追加したい場合は「_」で追加すると、すべての数字と下線を意味しますか? –

+0

'[...]'は、クラス内で定義された1文字に一致する*文字クラス*(または*ブラケット式*)を形成します。 '[\ d _。] +'は、1つ以上の数字、 '.'または/および' _'にマッチします。 [*文字クラス* here](http://www.regular-expressions.info/charclass.html)の詳細を読むことができます。 –