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

166
Visualizações
Regex para hacer coincidir todo excepto el atributo de valor de datos de la cadena

Estoy buscando una expresión regular para omitir el atributo data-value="4" de la cadena, por ejemplo, tengo una cadena, es decir

 Hello this is string <sfpart contenteditable="false" data-value="4">&rlm;</sfpart> and the 4 number in string

Ahora, en la cadena anterior, quiero reemplazar 4 con digamos <span class="yellow">4</span> pero no 4 dentro del data-value="4"

Puedo agarrar 4 y reemplazarlo con el <span class="yellow">4</span> haciendo el siguiente código

 const reg = new RegExp('('4')', 'gi'); const str = str.replaceAll(reg, '<span class="yellow">$1</span>');

Pero el problema está por encima de la expresión regular, seleccionando 4 dentro del atributo data-value datos y reemplazándolo con las etiquetas html span, es decir data-value="<span class="yellow">4</span> ", así que quiero omitir esa parte.

¿Algún genio para ayudar?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Usa afirmaciones . En este caso, una mirada negativa hacia atrás:

 (?<!data-value=")\d+

Esto asegurará que coincida solo con el carácter 4 que no está inmediatamente precedido por el nombre del atributo data-value (así como el =" que precede al valor del atributo).

Pruébelo aquí: https://regex101.com/r/SzPUOx/1

about 4 years ago · Juan Pablo Isaza Relatório

0

No debería usar expresiones regulares para hacer coincidir etiquetas y atributos HTML. Use DOMParser para analizar su cadena en su lugar, y luego itere a través de todos los nodeChildren y realice el reemplazo en los nodos de texto (que tendrán un nodeType de 3 ):

 const string = 'Hello this is string <sfpart contenteditable="false" data-value="4">&rlm;</sfpart> and the 4 number in string'; const parser = new DOMParser(); const parsedNode = parser.parseFromString(string, "text/html").body; for (let i = 0; i < parsedNode.childNodes.length; i++) { const node = parsedNode.childNodes[i]; if (node.nodeType === 3) { const replacementNode = document.createElement('span'); replacementNode.innerHTML = node.textContent.replaceAll(/(\d+?)/gi, '<span class="yellow">$1</span>'); node.parentNode.insertBefore(replacementNode, node); node.parentNode.removeChild(node); } } console.log(`Input:\n${string}`); console.log(`Output:\n${parsedNode.innerHTML}`); document.querySelector('#input').innerHTML = string; document.querySelector('#output').innerHTML = parsedNode.innerHTML;
 #input, #output { border: 1px solid #000; padding: 8px; margin: 8px; } span.yellow { background-color: yellow; }
 <strong>Input:</strong> <div id="input"></div> <strong>Output:</strong> <div id="output"></div>

about 4 years ago · Juan Pablo Isaza 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