.replace('',' - ')只会替换第一个空格

时间:2012-03-26 10:41:40

标签: javascript replace

我正在尝试

'any string separated with blankspaces'转换为

'any-string-separated-with-blankspaces'

我与.replace(' ','-')绑在一起,但它只会取代第一个......为什么?我该如何替换所有?

http://jsfiddle.net/7ycg3/

5 个答案:

答案 0 :(得分:5)

你需要一个正则表达式

.replace(/\s/g,'-')

\s将取代任何类型的空白字符。如果您严格遵循“正常”空白使用

/ /g

代替。

答案 1 :(得分:1)

您需要使用正则表达式作为第一个参数,使用/g修饰符使其替换所有匹配项:

var replaced = input.replace(/ /g,'-');

如果要替换任何空格字符而不是文字空格,则需要在正则表达式中使用\s而不是;如果您想用一个连字符替换任意数量的连续空格,请在+之后添加\s

答案 2 :(得分:1)

the MDN docs for String.replace中没有特别清楚地说明,但String.replace只替换一个,除非g标志包含在其中,使用正则表达式而不是字符串:

  

要执行全局搜索和替换,请在正则表达式中包含g开关,或者如果第一个参数是字符串,请在flags参数中包含g

(但请注意flags参数是非标准的,因为他们也会注意到这一点。)

因此,您需要tag.replace(/ /g,'-')

答案 3 :(得分:0)

http://jsfiddle.net/7ycg3/1/

将正则表达式与/g修饰符

一起使用

答案 4 :(得分:0)

在问题中使用/\s/g取代' '