Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript和正则表达式修改URL的结尾_Javascript_Regex_Replace - Fatal编程技术网

使用Javascript和正则表达式修改URL的结尾

使用Javascript和正则表达式修改URL的结尾,javascript,regex,replace,Javascript,Regex,Replace,我正在尝试清理URL(rss提要),以便在最后一个.rss(或.html)之后不再有其他字符。我正在使用w3schools.com上的TryIt编辑器进行测试。以下是我的测试代码: var str="http://rss.cnn.com/rss/cnn_world.rsstest"; var patt1=/(.*[.rss|.html]).*/g; var result = str.replace(patt1, "$1"); document.write(result); 我遇到的问题是,显示

我正在尝试清理URL(rss提要),以便在最后一个.rss(或.html)之后不再有其他字符。我正在使用w3schools.com上的TryIt编辑器进行测试。以下是我的测试代码:

var str="http://rss.cnn.com/rss/cnn_world.rsstest";
var patt1=/(.*[.rss|.html]).*/g;
var result = str.replace(patt1, "$1");
document.write(result);
我遇到的问题是,显示的结果是

http://rss.cnn.com/rss/cnn_world.rsstest
i、 e.“测试”没有被删除。我想知道是否有人可以检查我的正则表达式并解释我做错了什么


谢谢。

应该是
var patt1=/(\.rss\.html)。*$/g因为。是特殊字符

应该是
var patt1=/(\.rss\.html)。*$/g因为。你为什么不这样做呢

var str="http://rss.cnn.com/rss/cnn_world.rsstest";
str.replace(/test$/, "");
你为什么不这样做

var str="http://rss.cnn.com/rss/cnn_world.rsstest";
str.replace(/test$/, "");
首先,我推荐你或其他一些测试服务。原谅

其他一些回答者似乎完全没有抓住要点,因此,为了解释您的错误:

  • []
    不分组它定义了一个字符类。您编写的内容实际上与单个字符匹配,即以下任意字符:
    |hlmrst
  • 没有
    $
    锚定,两个
    *
    可能与您期望的不匹配
  • 请尝试:

    /(\.rss|\.html).*$/g
    
    这是演示。

    首先,我推荐您或其他一些测试服务。原谅

    其他一些回答者似乎完全没有抓住要点,因此,为了解释您的错误:

  • []
    不分组它定义了一个字符类。您编写的内容实际上与单个字符匹配,即以下任意字符:
    |hlmrst
  • 没有
    $
    锚定,两个
    *
    可能与您期望的不匹配
  • 请尝试:

    /(\.rss|\.html).*$/g
    
    这是演示。

    尝试使用子字符串

    string.substring(from, to)
    
    和lastindexof函数

    string.lastIndexOf(searchvalue) 
    
    将其合并为:

    var result = str.substring(0, str.toLowerCase().lastIndexOf("rss") + 3);
    
    最后:

    if (str.toLowerCase().lastIndexOf(".rss") > str.toLowerCase().lastIndexOf(".html")) 
    { result = str.substring(0, str.toLowerCase().lastIndexOf(".rss") + 4);
    } else {
    result = str.substring(0, str.toLowerCase().lastIndexOf(".html") + 5);
    }
    
    尝试使用子字符串

    string.substring(from, to)
    
    和lastindexof函数

    string.lastIndexOf(searchvalue) 
    
    将其合并为:

    var result = str.substring(0, str.toLowerCase().lastIndexOf("rss") + 3);
    
    最后:

    if (str.toLowerCase().lastIndexOf(".rss") > str.toLowerCase().lastIndexOf(".html")) 
    { result = str.substring(0, str.toLowerCase().lastIndexOf(".rss") + 4);
    } else {
    result = str.substring(0, str.toLowerCase().lastIndexOf(".html") + 5);
    }
    

    失去[],逃离。到\。(注意,这也将终止任何查询字符串参数…)丢失[],转义。到\。(注意,这也将终止任何查询字符串参数…“test”只是我的示例测试,理想情况下它应该替换后面的任何内容。rssb因为它可能不是“test”,它可以是任何内容。“test”只是我的示例测试,理想情况下它应该替换后面的任何内容。rssb因为它可能不是“test”,它可以是任何内容。请参见以下内容:“.”在[]@Stano中是文字化的,因为我的评论是指
    。是特殊字符
    和op最初发布的内容
    var patt1=/(.[.rss|.html]).*/g。[]内的点不是特殊字符,它们由[]进行文字化。请参见:我的评论所指的[]@Stano中的“.”是文字化的,因为。是特殊字符
    和op最初发布的内容var patt1=/(.[.rss|.html]).*/g。[]内的点不是特殊字符,它们由[]进行文字化。编辑以消除小写或大写以及我的其他错误;-)通过比较两者的索引,您可以检查wheter.rss或html是否位于末尾,然后确定在LastIndexOff中使用的字符串有很多种剥猫皮的方法。我认为基于正则表达式的解决方案在这里更合适。不过很有趣!编辑以消除小写或大写以及我的其他错误;-)通过比较两者的索引,您可以检查wheter.rss或html是否位于末尾,然后确定在LastIndexOff中使用的字符串有很多种剥猫皮的方法。我认为基于正则表达式的解决方案在这里更合适。不过很有趣!你的回答很好,因为我和sunny一起工作,而且我们都在一起解决这个问题,我们正在寻找.rss或.html的最后一个实例,给出这个例子
    http://rss.cnn.com/rss/cnn_world.rss/cnn_world.rsstest
    作为第二个测试,您的正则表达式并不贪婪,因此它将查找第一次迭代,而.*将意味着第二个实例将消失。有没有一种方法可以将它标记为贪婪,与
    相反?
    @Churk-确实有。使用否定的先行断言:
    /(\.rss|\.html)(?!.\.rss|\.html)。*$/g
    。看,你的答案很好,因为我和sunny一起工作,而且我们都在一起解决这个问题,我们正在寻找.rss或.html的最后一个实例,给出这个例子
    http://rss.cnn.com/rss/cnn_world.rss/cnn_world.rsstest
    作为第二个测试,您的正则表达式并不贪婪,因此它将查找第一次迭代,而.*将意味着第二个实例将消失。有没有一种方法可以将它标记为贪婪,与
    相反?
    @Churk-确实有。使用否定的先行断言:
    /(\.rss|\.html)(?!.\.rss|\.html)。*$/g
    。看见