1

最後の .rss (または .html) の後にそれ以上の文字がないように、URL (rss フィード) をきれいにしようとしています。テスト用に 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. $アンカーがないと、2 つの.*s が期待どおりに一致しない場合があります。

代わりに試してください:

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

これがjsFiddleのデモです。

于 2012-08-06T15:07:55.357 に答える
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 に答える