2010-12-28 17 views
6

URLアドレスからファイル名を取得する必要があります。ここで正規表現またはJavascriptを使用してURLからファイル名を取得してください

が基準です:

それは、次のシナリオでは、空の文字列""返却する必要があります。

http://somedomain.com 
http://www.somedomain.com 
http://somedomain.com/ 
http://www.somedomain.com/ 

そして、次のシナリオでfilename.php返すを:

http://somedomain.com/filename.php?query 
http://www.somedomain.com/filename.php?query 
http://somedomain.com/filename.php#query 
http://www.somedomain.com/filename.php#query 

私が見つけましたこの正規表現

[\w_.-]*?(?=[\?\#])|[\w_.-]*$からhere

ただし、入力http://somedomain.comにはsomedomain.comが返されます。ドメインの最後に/がない場合、ドメインを無視するように変更する方法を理解できません。

正規表現では扱いにくい場合は、JavaScriptソリューションにも感謝します。

Thanx事前に。 (\ /既存のものに追加)これは$1でファイル名を入れます

[\w_.-]*?(?=[\/\?\#])|[\w_.-]*$ 

答えて

21

あなたがブラウザにスクリプトを書いていると仮定すると、信頼できない不完全なregexenを書かなくても、フル機能のURLパーサーが利用できます。 hostは、pathnamesearchhash等:

var a= document.createElement('a'); 
a.href= 'http://somedomain.com/dirname/filename.php?query'; 
var filename= a.pathname.split('/').pop(); // filename.php 
+0

ありがとうございます。私はパス名などのプロパティについて知らなかった – miki725

0

使用すると、これはレギュレーションの元のバージョンを微調整しました

3

[^:]+://[^/]+/?([^?#]*)

(PS http://rentzsch.github.com/JSRegexTeststand/あなたの友人は、このためである

+0

ありがとうlocation様のプロパティを読み取ることHTMLAnchorElementを使用してください。これは素晴らしいですが、私はbobinceのソリューションを使用して終了しました。私はそれが簡単だったけれど。 – miki725

関連する問題