2013-07-18 10 views
5

Próbowałem sprawdzić, czy adres URL jest prawidłowy lub nieprawidłowy. kontrole 7,8 zwracają nieprawidłowe wyniki.Sprawdź, czy adres URL jest prawidłowy, czy nie.

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]); 
} 

Proszę pomóż mi go rozwiązać.

każda pomoc doceniona!

+4

Pamiętaj, że 'www' tylko subdomeny. Nie zawracałbym sobie głowy otwarciem, włączając to w regex. –

+1

Wiele rzeczy może być prawidłowym adresem URL, np. 'http: // xyz.mysite.org.ru' Domyślam się, że prawdziwym testem byłoby wypróbowanie i załadowanie go. –

+1

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

Odpowiedz

7

Spróbuj tego:

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

Niestety, działa to również "true" dla learnRegExp ("http: // fgsdfjgd"), co powinno być "false" – patrick

0

Problem z 7 (www\.)? to pozwala 0 lub 1 www. i [a-z0-9\-\.] pozwala . Ponieważ jest to tylko ww. następnie (www\.)? traktuje to jako 0 i [a-z0-9\-\.] oddaje ww..

Problem z 8 jest \.[a-z]{3} pozwala jedynie na .com, .net itp Zmusza ciąg po ostatnim . się 3 znaki. Ponieważ ma tylko 2 znaki, nie pasuje.

Nie próbować odtworzyć koło: What is the best regular expression to check if a string is a valid URL?

+2

Niestety RegExp na tej stronie jest w PHP, a nie w JavaScript, tak jak było zadawane ... – patrick

Powiązane problemy