http://localhost:8080/blah/blah/
誰でもこれがあるように思われますURLの最後から削除したいものが具体的に定義されていないため、決定的な解決策がない曖昧な問題です。
クエリパラメータを削除するのは簡単です(最初の例)。
末尾のスラッシュ(最後の2つの例)を正規化するのは簡単です。
パスの最後の部分を削除しても問題ありませんが、それはURLの最後に/index.php
と/blah
を区別できるルールをいくつか追加しない限り簡単ですアルゴリズムは、いつ削除するかを知っていますが、他のものを削除することはできません。問題を定義したので、 http://localhost:8080/blah/blah
の末尾のblah
が削除されるべきかどうかをコードは知ることができません。
たとえば、このコードではクエリパラメータとURLの最後の部分が削除されますが、これは4つの例のうちの3つでのみ機能しますが、末尾に削除したい項目が不明確になります。
function cleanURL(url) {
return(url.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/");
}
ここでは、4つの例すべてで実行されています。http://jsfiddle.net/jfriend00/2Q4Ue/。それは4例のために、これらの結果を返します。最後のURLについては
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/
を、あなたはそれはの一部だかどうかを知る方法がないので、アルゴリズムは、ファイル名として最後に/blah
を識別し、それを取り除くことがわかりますパスまたはファイル名。
ファイル名にファイル拡張子が必要で、ファイル名が存在しないときにパス名の最後の部分に拡張子が付かないという新しい規則を作成する場合は、そのようなアルゴリズムを使用して、場合。
OK、最後にファイル名がそれにピリオドを使って何があるという新しいルールで、その後、あなたはこれを使用することができます:http://jsfiddle.net/jfriend00/LpauM/をし、この結果を生成します。このフィドルに示されている
function cleanURL(url) {
return(url.replace(/\?.*$/, "")
.replace(/\/[^\/]*\.[^\/]*$/, "")
.replace(/\/$/, "") + "/");
}
[?どうすればJavaScriptでホスト名とパスにURLを解析しない]:4つのテストのURLのための
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
可能重複(http://stackoverflow.com/questions/736513/how-do-i-parse -a-url-into-hostname-and-path-in-javascript) –