2010-11-25 40 views
11

hiç böyle URL'ler kabul bir regex arıyorum ya https:// veya ftp://:Regex, ftp

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

nasıl protokol isteğe yapabilirim?

+1

'example.pl' yapmanızı sağlar: Polonya'da veya Perl bir web sitesi senaryo? – Boldewyn

+0

@Boldewyn, her ikisi de! :) –

+0

OP'nin durumunda maalesef değil. Ya regex tarafından tüketilecek ya da edilmeyecektir. [RFC 3986] (http://labs.apache.org/webarch/uri/rfc/rfc3986.html#regexp) (bağlantı, URL'leri ayrıştırmak için bir regexp'e yol açar), bir plan veya bir \ 'parçası. Her ne kadar bu tür şeyler bulmam gerektiğini anlasa da (bkz. [FF için Linkification addon] (http://yellow5.us/firefox/linkification/) – Boldewyn

cevap

9

(ftp|http|https):\/\/ kısım isteğe bağlı yap:

((ftp|http|https):\/\/)? 
+0

Teşekkür ederim ama şimdi örneğin "example" veya "[email protected]" ile eşleştirebilirim. Ve ben istemiyorum. Peki bunu nasıl çözebilirim? Rejeksim: regexp =/((ftp | http | https): \/\ /)? (\ W +: {0,1} \ w * @)? (\ S +) (: [0-9] ? *) (\/| \/([!.?! \ # w + = ve% @ \ - \ /])) /; "[email protected]" veya "example" ile eşleştirmek istemiyorum – Guest

+0

example1 example.com aslında geçerli bir URL: İlk 'örnek' bu şekilde gönderilebilen bir kullanıcı adıdır. Bu sayfayı, http: // 've' stackoverflow.com 'arasında bir 'example @' eklenmiş olarak yüklemeyi deneyin. – Boldewyn

+0

Tamam. Bunu bilmiyordum. Yardımın için teşekkürler. – Guest

2

(http, ftp, https) veya olmadan url doğrular, bu deneyin (http, ftp, https) .. Lütfen

/^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[a-z]{3,6}$/; 
+2

Bu normal ifade, Almanya'daki etki alanları için URL kabul etmemektedir. ör. (www.germany.de). Normal ifadeyi '/^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[az]{2,6}$/ olarak değiştirmeniz gerekiyor ; 2 önemli. –

+0

Bunu yapmak için böyle harika bir yol değil. Gerçekten yapabileceğiniz tek şey, '' için kontrol etmektir. 6 karakterden uzun isimlerle bir sürü yeni TLD var ... – Askdesigners

0

value = 'www.google.com'; 
if(/(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(value)) { 
      return true; 
     } else { 
      return false; 
     } 
012: yukarıdaki bağlantıdan aktaran https://codegolf.stackexchange.com/a/480/6593

bkz

1

bu ya üst ve alt durumlarda (http, ftp, https) olmadan url doğrulayacaktır deneyin ve ayrıca numerics için

/^(?:(ftp|http|https)?:\/\/)?(?:[\w-]+\.)+([a-z]|[A-Z]|[0-9]){2,6}$/gi;