2013-07-18 15 views
5

मैंने यह जांचने की कोशिश की कि क्या यूआरएल मान्य है या अमान्य है। 7,8 के चेक गलत आउटपुट देता है।जांचें कि क्या यूआरएल वैध है या नहीं

alert('1: ' + learnRegExp('http://www.google-com.123.com')); // true 
alert('2: ' + learnRegExp('http://www.google-com.123')); // false 
alert('3: ' + learnRegExp('https://www.google-com.com')); // true 
alert('4: ' + learnRegExp('http://google-com.com')); // true 
alert('5: ' + learnRegExp('http://google.com')); //true 
alert('6: ' + learnRegExp('google.com')); //true 
alert('7: ' + learnRegExp('ww.google.com')); //false -> it returns true 
alert('8: ' + learnRegExp('www.google.co.il')); //true -> it returns false 
alert('9: ' + learnRegExp('http://ww.google.co.il')); //false 
alert('10: ' + learnRegExp('https://ww.google.co.il')); //false 

function learnRegExp(){ 
    return /((ftp|https?):\/\/)?(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{3}$/ 
    .test(learnRegExp.arguments[0]); 
} 

कृपया इसे हल करने में मेरी सहायता करें।

किसी भी मदद की सराहना की! 7 के साथ

+4

याद रखें कि 'www' सिर्फ उप डोमेन है। मैं रेगेक्स में स्पष्ट रूप से परेशान नहीं होगा। –

+1

बहुत सी चीजें एक वैध यूआरएल हो सकती हैं उदा। 'http: // xyz.mysite.org.ru' मुझे लगता है कि असली परीक्षण कोशिश करेगा और इसे लोड करें –

+1

https://gist.github.com/dperini/729294 – naomik

उत्तर

7

इस एक का प्रयास करें:

function learnRegExp(s) {  
     var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 
     return regexp.test(s);  
} 
+5

दुर्भाग्य से यह सीखने के लिए 'सत्य' चलाता है REGExp ("http: // fgsdfjgd") साथ ही, जो 'झूठा' होना चाहिए – patrick

0

समस्या (www\.)? चूंकि यह केवल ww. तो (www\.)? व्यवहार करता है यह 0 और [a-z0-9\-\.] के रूप में कब्जा ww. है 0 या 1 www. और [a-z0-9\-\.]. की अनुमति देता है की अनुमति देता है है। 8 के साथ

समस्या \.[a-z]{3} केवल अनुमति देता है .com, .net, आदि के लिए यह पिछले . के बाद स्ट्रिंग बलों 3 अक्षरों का होना है। चूंकि यह केवल 2 वर्ण हैं, यह मेल नहीं खाता है।

पहिया पुनः बनाने की कोशिश मत करो: What is the best regular expression to check if a string is a valid URL?

+2

दुर्भाग्य से उस पृष्ठ पर RegExp PHP में है, जावास्क्रिप्ट में नहीं पूछा गया था ... – patrick

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