2009-12-31 2 views
8

Par exemple, j'ai la chaîne suivante:match toutes les URL dans la chaîne et le retour en tableau dans JavaScript

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

Je souhaite trouver toutes les URL valides et les placer dans un tableau, fait en JavaScript (et jQuery), dans ce cas:

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

pour l'instant, je ne peux correspondre une URL, mais je veux tout correspondre. Voilà ce que j'ai:

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

Faites-moi confiance, mettre url [1], url [2], etc. ne fonctionne pas :(

Toutes les idées

+0

Pourquoi soutenir uniquement 'ftp | http | https | gopher | mailto | nouvelles | NNTP | telnet | WAIS | file | Prospero | viser |? webcal'' [\ w \ -] + 'correspondra Par exemple, votre expression rationnelle ne correspondra pas 'google-search: foobar'. –

+0

En fait, j'étais o J'espère ne pas faire correspondre les URLs avec le support oembed, mais le modèle que j'ai trouvé a tous ces protocoles, peut-être que je vais le faire (http | https) ... – Samin

Répondre

16

Pass "g" dans Regexp

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/ 
Questions connexes