Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
Javascript RegEx provoca un bucle de mensajes y bloquea el navegador cuando se configura en algo que no sea /mg

Creé un script (el primero) que acepta texto de entrada y luego ejecuta alrededor de 30 expresiones regulares en el texto, generando valores descubiertos en una tabla HTML. El propósito es que yo pueda pegar texto que contenga información de especificaciones para productos y que se emitan de manera uniforme para poder pegarlos en una hoja de cálculo.

Lo he hecho funcionar muy bien y he estado ajustando las expresiones regulares a medida que pegaba datos con diferentes variaciones/diseños. Sin embargo, he llegado a un punto muerto y necesito ayuda:

Una de las expresiones regulares busca el número de pieza del producto (sku) y devuelve el valor en una columna. Algunos de los datos de origen incluyen más de una coincidencia porque existen variaciones regionales en los productos. En todos los casos el primer partido es el único que quiero. Probé RegEx en RegEx101 y devuelve la primera coincidencia solo con la bandera 'global' desactivada. Sin embargo, el mismo RegEx que se ejecuta en mi secuencia de comandos hace que devuelva los mensajes de la consola infinitamente antes de bloquearse. Inmediatamente no responde, así que no puedo ver ningún mensaje de error.

Aquí hay una muestra de la sección de expresiones regulares en mi script. siendo sku el que está causando problemas:

 let wallMountable = /(?<wallmountable>[Ww]all [Mm]ount)/mg; let sku = /^.*\((?<sku>\d\d\w\w[\d\w]+?).+?\).*$/m; function parseData() { // Execute the Regular Expressions on the text in 'specSheet' let specSheet = document.getElementById("specSheet").value; let wallMountableToken = wallMountable.exec(specSheet); let skuToken = sku.exec(specSheet); do { // If Token isn't null, then test to see if the regex group value is undefined. If either are true, do nothing, otherwise write the value to the document. if (wallMountableToken !== null) { if (wallMountableToken.groups.wallmountable !== undefined) {document.write(`${wallMountableToken.groups.wallmountable}`);} else {} } else {} if (skuToken !== null) { if (skuToken.groups.sku !== undefined) {document.write(`${skuToken.groups.sku}`);} else {} } else {} } // Loop through the script until a condition is met. while ( (wallMountableToken = wallMountable.exec(specSheet)) !== null, (skuToken = sku.exec(specSheet)) !== null ); }

El bucle while puede no ser necesario y, en verdad, no estoy del todo seguro de qué propósito tiene aquí, pero parecía aparecer constantemente en el material de referencia que estaba estudiando. Lo he incluido aquí porque es parte del script, pero tenga en cuenta que el script funciona si cambio la segunda expresión regular a /mg en lugar de /m, sin embargo, devuelve varios valores y solo quiero que devuelva la primera captura.

Sé que hay muchos errores con el script, pero esta pregunta en particular es sobre por qué la expresión regular está causando un bucle infinito, por lo que cualquier ayuda para lograr ese objetivo es muy apreciada.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda