2011-06-20 59 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”后缀,它只会进行一次替换。那处理“!?”在中间,但是“d”结束了序列。

+0

没错,这是'g'标志由于缺少。 –

+0

啊哈!辉煌。谢谢 –

3

因为你没有在你的匹配器上使用(g)lobal标志,所以它只匹配非单词字符的第一个连续序列

下应该给你所期望的结果:

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