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

396
Vistas
¿Cuál es el reverso del nuevo constructor RegExp()?

Tengo un problema RegExp con el que necesito ayuda. Tengo dos cadenas str1 = "abcde $a1$ cdeg $x$ fghj $v8$ ABCDEa1FGH $a1$ LMN" y str2 = "NMNa1CD (a1+x)/(v8-x+a1) dgd" . Reemplacé T1 por a1 , T2 por x , T3 por v8 en str1 (aquellos entre $...$ ). Ahora quiero reemplazar de acuerdo a esa regla ( T1 por a1,... ) en str2 , pero solo los elementos en la expresión matemática, hice lo siguiente: Saco todos los elementos entre $..$ en str1 ( a1 , x , v8 ) para formar una matriz: extraje todos los elementos entre $..$ en la cadena str1 para formar una matriz:

 var $str$ = str1.match(/\$+[^$]+\$/g).toString(); var str = $str$.substring(1,$str$.length-1); var wr = str.match(/\w\d|[az]/g); var newWr = unique(wr);//here is a function that merges duplicate elements in an array

Luego busco y reemplazo los elementos en la cadena str2:

 for (var i =0;i <= newWr.length-1;i++){ var x = newWr[i]; var str2 = str2.replace(x,"T"+(i+1)); Logger.log(str2);

Por supuesto, al ejecutar el código anterior, se reemplazarán todos los elementos a1 , x , v8 . Mientras que solo quiero reemplazar los elementos que están en la expresión matemática (a1+x)/(v8-x+a1) . Usé RegExp de la siguiente manera

 var str2 = str2.replace(/x(?=\W)/g,"T"+(i+1));

Pero no funcionó. He investigado mucho sobre RegExp pero no he encontrado una solución. pido su ayuda, gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su solución es casi correcta, pero la x en la expresión regular debe ser el valor de la variable x , no la letra x . Entonces, lo siguiente debería solucionar ese problema.

 for (let i = 0; i <= newWr.length - 1; i++) { let x = newWr[i]; const regex = new RegExp(`${x}(?=\\W)`, 'g'); str2 = str2.replace(regex, "T" + (i + 1)); } console.log(str2); // NMNa1CD (T1+T2)/(T3-T2+T1) dgd
about 4 years ago · Juan Pablo Isaza Denunciar
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