2010-12-28 29 views
6

का उपयोग कर URL से फ़ाइल नाम प्राप्त करें मुझे 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 लौटाता है। जब मैं / पर इसके अंत में डोमेन को अनदेखा करने के लिए इसे संशोधित करने का तरीका समझ नहीं पा रहा हूं।

यदि नियमित अभिव्यक्तियों के साथ करना मुश्किल है, तो मैं एक जावास्क्रिप्ट समाधान की सराहना करता हूं।

अग्रिम में Thanx। (मौजूदा \/करने के लिए जोड़ा)

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

उत्तर

21

मान लें कि आप ब्राउज़र में स्क्रिप्ट लिख रहे हैं, अविश्वसनीय अपूर्ण रेगेक्सन लिखने के बिना, इसका लाभ उठाने के लिए पहले से ही एक पूर्ण-विशेषीकृत यूआरएल पार्सर है। एक HTMLAnchorElement का प्रयोग करें location की तरह गुण host, pathname, search, hash आदि .:

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

धन्यवाद। मुझे pathname, आदि गुणों के बारे में पता नहीं था – miki725

0

उपयोग इस रेग पूर्व के संस्करण फेरबदल परीक्षण की तरह)

3

यह $1 में फ़ाइल नाम रखा जाएगा: [^:]+://[^/]+/?([^?#]*)

(ps http://rentzsch.github.com/JSRegexTeststand/ इस के लिए अपने दोस्त है

+0

धन्यवाद पढ़ने के लिए। यह बहुत अच्छा काम करता है हालांकि मैं बॉबन्स द्वारा समाधान का उपयोग कर समाप्त हुआ। हालांकि यह आसान था। – miki725

संबंधित मुद्दे