1

你好我这里有问题。我正在尝试+使用 javascript 替换字符串中的所有字符实例。发生的情况是只有第一个实例被更改。

这是我的代码:

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

输出Hello%2BWord%+应该是什么时候,Hello%2BWord%%2B因为有 2 个实例+

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

请帮忙。提前致谢。

4

3 回答 3

2

你需要全局标志。

在http://jsfiddle.net/rtoal/Wy48Z/1/为您修复

var keyword = "Hello+Word%+";
keyword = keyword.replace(/\+/g, encodeURIComponent("+"));
alert(keyword);​
于 2012-07-13T01:57:54.397 回答
1

javascript 正则表达式,这是通过将表达式放在两个正斜杠之间完成的,例如:/<expression/

如果要全部替换,只需g在最后一个之后附加一个,例如:

/<expression/g

在你的情况下,这将是/\+/g

于 2012-07-13T01:58:01.277 回答
1

跨浏览器的方法是使用带有(全局)标志的正则表达式g,这意味着“处理模式的所有匹配,而不仅仅是第一个”:

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

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

于 2012-07-13T01:58:10.977 回答