2012-07-13 30 views
1

嗨,我有一个问题在这里。我试图用javascript替换字符串中所有+字符的实例。会发生什么是只有第一个实例正在改变。javascript - 如何做replaceAll?

这里是我的代码:

var keyword = "Hello+Word%+"; 
keyword = keyword.replace("+", encodeURIComponent("+")); 
alert(keyword); 

输出为Hello%2BWord%+当它应该是Hello%2BWord%%2B因为也有+ 2个实例。

您可以检查这:http://jsfiddle.net/Wy48Z/

请帮助。提前致谢。

回答

2

您需要全局标志。 /<expression/

如果要全部更换,只需添加一个g后:

http://jsfiddle.net/rtoal/Wy48Z/1/

var keyword = "Hello+Word%+"; 
keyword = keyword.replace(/\+/g, encodeURIComponent("+")); 
alert(keyword);​ 
+0

因此,g是什么。我总是看到很多例子,但我认为它只是一个随机的角色。 – NinjaBoy 2012-07-13 01:59:46

+0

哦,对不起,应该添加到答案。在'/.../'之后,你可以放置一个修饰符,如s,g或i。 g意味着到处替换,我的意思是不区分大小写。你可以在这里查看它们(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/)。 – 2012-07-13 02:03:49

1

JavaScript的正则表达式,它是通过将expresison其间的两个正斜杠喜欢做修正了你最后一个,如:

/<expression/g

的In y我们的情况下,这将是/\+/g

1

的跨浏览器的方法是使用一个regexpg(global)标志,这意味着“过程中,不只是第一个模式的所有匹配”:

keyword = keyword.replace(/\+/g, encodeURIComponent("+")); 

注意我在加号前加了一个反斜杠,因为否则它会具有“匹配上述一个或多个事物”的特殊含义。