我正在尝试清理一个URL(rss feed),以便在最后一个.rss(or.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
即。 “测试”没有被删除。我想知道是否有人可以检查我的正则表达式并解释我做错了什么?
谢谢。
答案 0 :(得分:2)
首先,我建议jsFiddle或其他一些测试服务。原谅my bias。
其他一些回答者似乎完全忽略了这一点,所以要解释你的错误:
[]
不分组 - 它定义了一个字符类。你写的内容实际上匹配一个角色,即其中任何一个角色:.|hlmrst
。$
锚点,则两个.*
可能与您期望的不匹配。尝试改为:
/(\.rss|\.html).*$/g
这是jsFiddle演示。
答案 1 :(得分:1)
应该是var patt1=/(\.rss|\.html).*$/g;
因为。是特殊字符
答案 2 :(得分:1)
尝试使用substring
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);
}
答案 3 :(得分:0)
你为什么不这样做
var str="http://rss.cnn.com/rss/cnn_world.rsstest";
str.replace(/test$/, "");