2009-12-31 9 views
8

Por ejemplo, tengo la siguiente cadena:de ajuste de todas las URL en cadena y el retorno en la matriz de JavaScript

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

Deseo encontrar todas las direcciones URL válidas y colocarlos en una matriz, hecho en JavaScript (y jQuery), por lo que en este caso:

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

Por ahora, sólo puedo coincidir con una dirección URL, pero me gustaría para que coincida con todos. Esto es lo que tengo:?

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

Confía en mí, poniendo url [1], URL [2], etc. no funciona :(

Cualquier idea

+0

por qué sólo soportan 'ftp | http | https | gopher | mailto | Noticias | NNTP | telnet | WAIS | archivo | Prospero | apuntar |? webcal'' [\ w \ -] + 'coincidirá cada protocolo posible. Por ejemplo, su expresión regular no coincidirá con 'google-search: foobar'. –

+0

en realidad, yo estaba o Solo espero igualar las URL con soporte de oembed, pero el patrón que encontré tiene todos estos protocolos, tal vez lo haga (http | https) ... – Samin

Respuesta

16

Pass "g" en 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/ 
Cuestiones relacionadas