Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda