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

166
Vistas
La expresión Regex no devuelve el término completo

La intención de la expresión regular es capturar subcadenas envueltas entre expresiones gemelas entre paréntesis, algo así como etiquetas html. Por ejemplo:

 <p id="textTwo">And this shall be (blue)the ocean(blue) and this shall also be like (blue)the ocean(blue)</p>

Y aquí está mi código

 let color = 'blue'; let getColor = new RegExp(`(${color})(.*)(${color})`); let coloredText = textTwo.match(getColor); 

 let text = document.getElementById('text').innerText; let textTwo = document.getElementById('text2').innerText; let color = 'blue'; let getColor = new RegExp(`(${color})(.*)(${color})`); let coloredText = textTwo.match(getColor); // italicsText.forEach((string, index) => { // string.replace("(i)", "<i>"); // console.log(typeof(string)); // }); // text.replace(italics, "<i>"); let italics = text.replace(/\((.*?)\)/g, (_, match) => `<${match}>`); console.log(italics); console.log(italics); console.log(coloredText);
 <p id="text">Hello there (i)Good Sir(i). How can I help you (i)today(i)</p> <p id="text2">And this shall be (blue)ao!(blue) and this shall also be (blue)like the ocean(blue)</p>

¿Alguien puede decirme por qué esto no captura todo?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La expresión regular para el caso específico '(blue)' sería ... /\(blue\)(?<colored>.*?)\(blue\)/g .

El literal de expresiones regulares anterior (necesita) escapar de caracteres específicos de expresiones regulares como ( y ) porque tienen un significado especial como para los dos últimos que marcan un grupo de captura.

Para hacer coincidir/capturar dinámicamente los patrones relacionados con el valor del color, es necesario utilizar

  • Literales de plantilla
  • y el constructor RegExp .

En comparación con el literal regex, uno proporciona un parámetro de pattern basado en cadenas para el constructor RegExp donde uno necesita escapar de los caracteres de escape del patrón ( \ a '\\' ).

 const sampleText = 'And this shall be (blue)the ocean(blue) and this shall also be like (blue)another ocean(blue)'; const sampleColor = 'blue'; // see ... [https://regex101.com/r/eHCaWJ/1] // ... /\(blue\)(?<colored>.*?)\(blue\)/g const regExpColored = RegExp(`\\(${ sampleColor }\\)(?<colored>.*?)\\(${ sampleColor }\\)`, 'g'); console.log( 'all matches ...', sampleText .match(regExpColored) ) console.log( 'any capture ...', Array .from( sampleText .matchAll(regExpColored) ) .map(({ groups: { colored }}) => colored) )
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Santiago Trujillo Denunciar

0

Los caracteres () son especiales en una expresión regular y deben escaparse con \ si desea que coincidan literalmente. Y debido a que \ en un literal de cadena de JavaScript también es especial, debe escaparse con otro \ :

 let color = 'blue'; let getColor = new RegExp(`\\(${color}\\)(.*)\\(${color}\\)`);
about 4 years ago · Santiago Trujillo 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