正则表达式和JavaScript字符串最后一美元($)

时间:2011-06-20 12:54:05

标签: javascript regex

在回答这个PHP问题:regex - preg_replace string时,我发现了一些我不理解的Javascript。 鉴于以下内容:

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

我被警告:

abc d$

为什么不剥离最后一美元?

2 个答案:

答案 0 :(得分:9)

因为有一个介入的单词字符。试试这个:

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

正则表达式上没有“g”后缀,它只进行一次替换。处理“!?”在中间,但“d”结束了序列。

答案 1 :(得分:3)

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

以下内容应该给出您期望的结果:

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