2011-06-20 9 views
2

このPHPの質問に答えて:regex - preg_replace string、私はJavascriptで何かを理解できませんでした。 を考えると、次の

var s = "abc1!?d$"; 
alert(s.replace(/\W+/, " ")); 

私は警告しています:

abc d$ 

は、なぜそれが最後のドルをストリッピングされていませんか?

答えて

9

介在する単語文字があるためです。これを試してください:

alert(s.replace(/\W+/g, ' ')); 

正規表現に「g」というサフィックスがないと、1回の置換だけが行われます。それは "!?"途中で "d"はシーケンスを終了します。

+0

にピタッと、それは 'G'フラグの不在です。 –

+0

Aha!ブリリアント。ありがとう –

3

matcherで(g)lobalフラグを使用していないので、最初のの連続したシーケンスの単語以外の文字に一致します。

次はあなたが期待する結果を与える必要があります。

var s = "abc1!?d$"; 
alert(s.replace(/\W+/g, " ")); 
関連する問題