1

我正在尝试清理 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

即“测试”没有被删除。我想知道是否有人可以检查我的正则表达式并解释我做错了什么?

谢谢你。

4

4 回答 4

2

首先,我推荐jsFiddle或其他一些测试服务。原谅我的偏见

其他一些回答者似乎完全忽略了这一点,所以解释你的错误:

  1. []不分组——它定义了一个字符类。您所写的内容实际上匹配单个字符,即以下任何一个:.|hlmrst.
  2. 如果没有$锚,这两个.*s 可能与您期望的不匹配。

请尝试:

/(\.rss|\.html).*$/g

这是jsFiddle演示。

于 2012-08-06T15:07:55.357 回答
1

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

于 2012-08-06T15:05:49.743 回答
1

尝试使用子字符串

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);
}
于 2012-08-06T15:09:26.547 回答
0

你为什么不做

var str="http://rss.cnn.com/rss/cnn_world.rsstest";
str.replace(/test$/, "");
于 2012-08-06T15:06:16.390 回答