URL内の複数のスラッシュを、コロンに続くものを除いて単一のスラッシュに置き換えるための正規表現が必要です
例http://link.com//whatever///
:http://link.com/whatever/
URL内の複数のスラッシュを、コロンに続くものを除いて単一のスラッシュに置き換えるための正規表現が必要です
例http://link.com//whatever///
:http://link.com/whatever/
私はこれがうまくいくはずだと思います:/[^:](\/+)/
またはあなたが倍数/[^:](\/\/+)/
だけが欲しいなら。
リーディングとは一致//
しませんが、あなたはそれを探していないようです。
交換する:
"http://test//a/b//d".replace(/([^:]\/)\/+/g, "$1") // --> http://test/a/b/d
あなたはすでに答えを受け入れたので。マッチングの拡張とマッチの制御を示すために、これは将来的に役立つ可能性があります。
var url = 'http://link.com//whatever///';
var set = url.match(/([^:]\/{2,3})/g); // Match (NOT ":") followed by (2 OR 3 "/")
for (var str in set) {
// Modify the data you have
var replace_with = set[str].substr(0, 1) + '/';
// Replace the match
url = url.replace(set[str], replace_with);
}
console.log(url);
出力します:
http://link.com/whatever/
ダブレットはあなたの状況では問題になりません。この文字列がある場合:
var url = 'http://link.com//om/om/om/om/om///';
配列set
には複数のが含まれますm//
。ループがその変数を数回見るので、少し冗長です。良いことは、String.replace()
何も見つからない場合は何も置き換えないので、害はありません。
最初から重複を取り除くことができますがset
、これには、forループで重複を処理するのとほぼ同じ量のリソースが必要になります。
幸運を!
result = subject.replace(/(?<!http:)\/*\//g, "/");
または(http、https、ftp、およびftpsの場合)
result = subject.replace(/(?<!(?:ht|f)tps?:)\/*\//g, "/");