【问题标题】:javascript replace string and before chars of urljavascript替换字符串和url的字符之前
【发布时间】:2012-06-25 15:38:26
【问题描述】:

我有以下网址,我想找到一个字符串并删除该字符串以及它之前的任何内容。

字符串:me.do?page=

网址可以是

http://demo.com/me.do?page=/facebook/link/home.php
http://demo.com/sub-folder/me.do?page=/facebook/link/home.php
http://**subdomain**.demo.com/sub-folder/demo/me.do?page=/facebook/link/home.php

最终输出应该是

/facebook/link/home.php
/facebook/link/home.php
/facebook/link/home.php

【问题讨论】:

    标签: javascript regex url


    【解决方案1】:

    即使在这种情况下也不需要正则表达式:

    var url = "http://demo.com/me.do?page=/facebook/link/home.php";
    var result = url.split("/me.do?page=")[1];
    

    【讨论】:

    • 请注意,如果由于某种原因还有另一个"/me.do?page=",它将失败。即使要拆分的东西多次出现,也要拆分并获取所有内容this question will be useful
    • 我应该解释一下这段代码有一些注意事项。一个是/me.do?page= 必须存在于字符串中,否则 split 将返回一个包含 1 个字符串的数组,并且您将从 [1] 中得到一个索引越界错误。其次,就像@ajax333221 所说,如果有超过1 个/me.do?page=,它将(或应该)只获取第一个实例和第二个实例之间的结果。此处提供的其他答案在这些方式上更加健壮,但这是一个快速而肮脏的解决方案,相当易读
    【解决方案2】:
     var ur="http://demo.com/sub-folder/me.do?page=/facebook/link/home.php";
      var answer=ur.substring(ur.indexOf("me.do?page=")+11, ur.length);
    

    【讨论】:

    • 第一个如果有人想知道+11 来自me.do?page= 的长度。第二个substring() 的第二个参数可以省略以获取字符串的其余部分,这就是ur.length 所做的。这比我的答案更强大,因为它会找到me.do?page= 的第一个实例并返回其余部分,但我们有一个“幻数”,取决于您搜索的字符串的长度......
    【解决方案3】:

    如果你真的觉得你需要一个正则表达式来回答这个问题,并记住字符串操作更快/更便宜,有:

    var urls = ["http://demo.com/me.do?page=/facebook/link/home.php",
                        "http://demo.com/sub-folder/me.do?page=/facebook/link/home.php",
                        "http://**subdomain**.demo.com/sub-folder/demo/me.do?page=/facebook/link/home.php"],
        newUrls = [];
    
    for (var i = 0, len = urls.length; i < len; i++) {
        var url = urls[i];
        newUrls.push(url.replace(/.+\/me\.do\?page\=/, ''));
    }
    
    console.log(newUrls);​
    

    JS Fiddle demo.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2012-08-29
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多