2009-12-31 19 views
8

yılında dizide dize ve karşılığında tüm URL'lerin Örneğin, ben şu dizesi vardır:Maç JavaScript

var string = 'watch this video http://vimeo.com/8122132 and then see this picture http://www.flickr.com/photos/pmorgan/32606683/'; 

tüm geçerli URL'leri bulmak ve JavaScript yapılan bir dizi, koyun isteyen (ve jQuery), bu durumda bu yüzden:

url[0] = http://vimeo.com/8122132 
url[1] = http://www.flickr.com/photos/pmorgan/32606683/ 

Şimdilik, sadece bir URL eşleşebilir, ama tüm maç istiyoruz. Bu benim ne var:?

geturl = new RegExp("(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))"); 
var url = geturl.exec(string); 
$('#urls').html(url[0]); 

Güven bana, url koyarak [1], url [2], vb :(

Herhangi fikirleri çalışmıyor

+0

Neden sadece desteklemek 'ftp | http | https | gopher | mailto | haber | nntp | telnet | wais | dosya | Prospero | amaç |? webcal'' [\ \ w -] + 'eşleşecek Mümkün olan her protokol.Örneğin, regexp 'google-search: foobar 'ile eşleşmeyecektir. –

+0

aslında Nls destekli bir şekilde urls ile eşleşmeyi umuyor, ama bulduğum model tüm bu protokollere sahip, belki de bunu yapacağım (http | https) ... – Samin

cevap

16

Pas "g" RegExp içinde

geturl = new RegExp(
      "(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))" 
     ,"g" 
     ); 


string.match(geturl).length 
2 

string.match(geturl) 
http://vimeo.com/8122132, http://www.flickr.com/photos/pmorgan/32606683/