Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Expresión regular para extraer el valor de un link <a> con replace

Estas en el tema de Expresión regular para extraer el valor de un link <a> con replace en el foro de Javascript en Foros del Web. Buenas. Necesito una expresión regular que busque en un texto etiquetas <a> y las reemplace por el contenido de dentro de la etiqueta con replace. ...
  #1 (permalink)  
Antiguo 11/07/2014, 10:19
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Expresión regular para extraer el valor de un link <a> con replace

Buenas. Necesito una expresión regular que busque en un texto etiquetas <a> y las reemplace por el contenido de dentro de la etiqueta con replace. Por ejemplo, para el siguiente texto:

Código HTML:
Ver original
  1. Mira esta web: <a rel="nofollow" target="_blank" href="http://www.unaweb.com/" class="link">www.unaweb.com</a>

Debería filtrar y dejar el siguiente texto:

Código HTML:
Ver original
  1. Mira esta web: www.unaweb.com

¿Esto se puede hacer? Si se puede, ¿alguien puede decirme cómo? Gracias
  #2 (permalink)  
Antiguo 11/07/2014, 11:21
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Expresión regular para extraer el valor de un link <a> con replace

Puedes conseguir el efecto de strip_tags() de PHP, pero en JavaScript con la función que nos propone PHPJS.

Ejemplo: http://jsfiddle.net/uLmfE/

También puedes hacer tu propia función si te aburres y tal
  #3 (permalink)  
Antiguo 11/07/2014, 11:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Expresión regular para extraer el valor de un link <a> con replace

La expresión regular tendría esta forma: /<.*>(.*)<\/.*>/g. Ya luego sería cuestión de que tomes al primer y único grupo anónimo de esa expresión, el cual equivale al texto del enlace y lo asignes a donde desees.

Suponiendo que el texto se encuentre en el cuerpo del documento:
Código Javascript:
Ver original
  1. var body = document.body,
  2.     texto = body.innerHTML,
  3.     regexp = /<.*>(.*)<\/.*>/g;
  4.  
  5. body.innerHTML = texto.replace(regexp, "$1");

De este modo, reemplazas al texto anterior por el actualizado, el cual incluye al texto del enlace. Con el $1, tomo al grupo anónimo de la expresión regular, denotado entre paréntesis.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 11/07/2014, 12:12
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Expresión regular para extraer el valor de un link <a> con replace

Me valen las dos soluciones. Fantástico! Gracias a los dos!!

Ya puestos, ¿conoceis alguna buena función que haga el proceso contrario? Es decir, que genere los <a> a partir de cadenas que empiecen por www, http:// o https://? He estado mirando en Stack Overflow pero no encuentro nada realmente decente. Hasta ahora lo hacía con php con esta función que encontré en su día:

Código PHP:
Ver original
  1. $str_return = preg_replace("/((http:\/\/|https:\/\/|www\.)[^\s]+)/", '<a target="_blank" rel="nofollow" href="$1">$0</a>', $texto);
  #5 (permalink)  
Antiguo 11/07/2014, 12:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Expresión regular para extraer el valor de un link <a> con replace

Usa una expresión regular que busque un texto con la forma válida de una URI y lo colocas en un elemento de enlace.

Código Javascript:
Ver original
  1. var body = document.body,
  2.     texto = body.innerHTML,
  3.     regexp = /((https?:\/\/)?www\.[\w\-_]*\.[\w\-_]{2,6})/g;
  4.  
  5. body.innerHTML = texto.replace(regexp, "<a href = '$1'>$1</a>");

Deben haber otras formas mejores para hacerlo, esta la hice con algo de prisa. Si puedes, busca otras.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 12/07/2014, 09:30
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Expresión regular para extraer el valor de un link <a> con replace

Gracias! Me vale esa, aunque mantendré la que ya tengo en php también

Etiquetas: replace
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:11.