在回答这个PHP问题:regex - preg_replace string时,我发现了一些我不理解的Javascript。 鉴于以下内容:
var s = "abc1!?d$";
alert(s.replace(/\W+/, " "));
我被警告:
abc d$
为什么不剥离最后一美元?
答案 0 :(得分:9)
因为有一个介入的单词字符。试试这个:
alert(s.replace(/\W+/g, ' '));
正则表达式上没有“g”后缀,它只进行一次替换。处理“!?”在中间,但“d”结束了序列。
答案 1 :(得分:3)
因为您没有在匹配器上使用(g)lobal标志,所以它只匹配非单词字符的第一个连续序列。
以下内容应该给出您期望的结果:
var s = "abc1!?d$";
alert(s.replace(/\W+/g, " "));