【问题标题】:Replace all matches except the first one替换除第一个以外的所有匹配项
【发布时间】:2011-03-28 19:35:31
【问题描述】:

我的网址格式不正确,如下所示:http://www.abc.com/?abc&?as&?blah

现在,我想匹配(并消除)URL 中除第一个之外的所有?,以使 URL 干净。是否可以在 JavaScript 中使用正则表达式?我尝试了积极的向后看和其他方法,但对我没有用。

【问题讨论】:

    标签: javascript regex


    【解决方案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, '');
      

      【讨论】:

        【解决方案3】:

        试试这个,

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

        javascript regular expression tester中测试过。

        【讨论】:

          猜你喜欢
          • 2022-01-08
          • 2017-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-08
          • 1970-01-01
          • 2022-08-24
          • 2022-12-02
          相关资源
          最近更新 更多