Tengo una regex
expresión que me devuelve todos los enlaces de un archivo html, pero tiene un problema: en lugar de devolver solo el enlace, como http://link.com
, también devuelve href = "( href="http://link.com
). ¿Qué puedo hacer para obtener solo el links
sin tener eso href="
?
Esta es mi expresión regular:
/href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g
Código completo:
var source = (body || '').toString();
var urlArray = [];
var url;
var matchArray;
// Regular expression to find FTP, HTTP(S) URLs.
var regexToken = /href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g;
// Iterate through any URLs in the text.
while( (matchArray = regexToken.exec( source )) !== null )
{
var token = matchArray[0];
token = JSON.stringify(matchArray[0]);
token = matchArray[0].toString();
urlArray.push([ token ]);
}
RegExp#exec
almacenará todo el contenido capturado por los grupos de captura que están definidos en su patrón. Puede acceder al Grupo 1 con [1]
index.
Usar
var token = matchArray[1];
Además, creo que puede acortar la expresión regular a solo
/\bhref="((?:http|ftp)[^"]+)"/g
si está seguro de que los valores siempre están entre comillas dobles. Vea esta demostración .
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras