Cambio en comportamiento de expresión regular


([N1] aztecmexico) #1

Buen día a todos,

Anteriormente (hasta la versión 7.19), y basado en los ejemplos del foro, la siguiente línea funcionaba perfectamente para extraer el contenido de un html que dispara un formulario V7 en mi aplicación:

var contenido = codigo.match(/<div>([\s\S]*)</div>/)[1]

Esto es, al detectar un click en el html me devolvía el siguiente código:

{"Latitud":"22.02072633149476","Longitud":"-102.42416381835938","TipEvent":"1","IdEntidad":"1","Origen":"1"}

Pero a partir de la 7.20 a dejado de funcionar correctamente y ahora me devuelve linea de más, como en el siguiente ejemplo:

{"Latitud":"22.02072633149476","Longitud":"-102.42416381835938","TipEvent":"1","IdEntidad":"1","Origen":"1"}</div>
    <a id="external" href="#"></a>
    

<div style="position: absolute; left: 0px; top: -2px; height: 1px; overflow: hidden; visibility: hidden; width: 1px;"><span style="position: absolute; font-size: 300px; width: auto; height: auto; margin: 0px; padding: 0px; font-family: Roboto, Arial, sans-serif;">BESbswy</span></div></body></html>

¿Le ha pasado a alguien más?
Imagino que hay que corregir la línea del match, pero he hecho pequeñas modificaciones sin obtener el resultado esperado, ¿alguna sugerencia?

Como siempre, gracias de antemano por su valioso apoyo.

Martin


([N1] aztecmexico) #2

Actualización,

Pues resulta que la expresión regular, como tal esta correcta, el match tambien, el problema es que en ejecución google inserta código al final, después de donde yo tengo mi último div.

Como no soy muy ducho en las expresiones regulares, pregunto, ¿cómo podría restringir a que solo tome el primer cierre de div posterior al contenido que realmente me interesa?.

Saludos y gracias de antemano.

Martin.


([N3] pacosatu) #3

Hola Martin.

Efectivamente, la expresión regular falla porque el tag de apertura del contenedor div contiene código extra style="…

Prueba con lo siguiente:
var contenido = codigo.match(/<div[^<>]>([\s\S]?)</div>/)[1]

Usa un probador Online de expresiones regulares para comprobar los resultados.

De todas formas esta no es la mejor manera de interactuar con el Visor Web.
Es una gran limitación de Velneo que ni siquiera espero que veamos solucionada con el nuevo visor Chromiun de la 7.21.

Saludos
Paco Satué


([N1] aztecmexico) #4

Gracias Paco,

Funciona perfecto, solo agregándole el id del div, hacia tiempo que le daba la vuelta al tema de las expresiones regulares, pero entiendo que son muy importantes, sobre todo ahora con un proyecto que traigo entre manos, el cual en su especificación de campos (bastantes por cierto), todas las validaciones de contenido son mediante expresiones regulares.

Gracias tambien por el link del validador, sobre todo porque ahi va explicando el funcionamiento de cada componente de la expresión, lo cual ayuda a comprender mejor su funcionamiento.

Saludos.

Martin.