替换除第一个之外的所有匹配

时间:2010-08-12 08:42:44

标签: javascript regex

我的网址格式错误如下:http://www.abc.com/?abc&?as&?blah

现在,我希望匹配(并消除)除第一个之外的URL中的所有?,以使URL清晰。是否可以在JavaScript中使用正则表达式?我尝试了积极的背后和其他方法,但它对我不起作用。

3 个答案:

答案 0 :(得分:2)

也许不是最好的,但可能的解决方案:在第一个问号处将字符串剪成两半,使用正则表达式删除第二个字符串中的所有问号,将它们粘合在一起。

答案 1 :(得分:2)

var url = 'http://www.abc.com/?abc&?as&?blah';
var pos = url.search(/\?/) + 1;
var validUrl = url.substr( 0, pos )
             + url.slice( pos ).replace(/\?/g, '');

答案 2 :(得分:1)

试试这个,

var str = "http://www.abc.com/?abc&?as&?blah";
str = str.replace(/(http:\/\/[^\/]+\/\?[^\?]+)\?([^\?]+)\?([^\?]+)/,"$1$2$3");

javascript regular expression tester

中对其进行了测试