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

299
Visualizações
Regex javascript coincide con la segunda letra por la primera letra, pero la segunda letra debe ser mayúscula

Esta expresión regular coincide con la segunda letra por la primera letra, pero la segunda letra no es mayúscula

 ([az])\1

Ahora la expresión regular coincide con letras como aa o bb,... pero necesito que mi expresión regular coincida con todas las aA,bB,... de esta cadena "abc aA cv bB kl mM "

Entonces, ¿cómo hacer que la expresión regular pueda coincidir con el segundo valor por el primer valor, pero el segundo debe ser mayúscula?

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

0

Podría expresar esto haciendo coincidir todo [az]\1 en modo minúsculas y luego verificando si cada coincidencia también coincide con [az][aZ] :

 var input = "abcaAcvbBklmMzzQQ"; var matches = input.match(/([az])\1/gi) .filter(x => /^[az][AZ]$/.test(x)); console.log(matches);

about 4 years ago · Juan Pablo Isaza Relatório

0

Es feo, pero si debe usar una expresión regular simple, podría usar fuerza bruta para el conjunto completo de emparejamientos:

 var myText = "aAaaABbCCddEEeEfF"; var letterPairs = myText.match(/aA|bB|cC|dD|eE|fF|gG|hH|iI|jJ|kK|lL|mM|nN|oO|pP|qQ|rR|sS|tT|uU|vV|wW|xX|yY|zZ/g); console.log(letterPairs);

No se siente muy satisfactorio como solución, pero hará el trabajo.

about 4 years ago · Juan Pablo Isaza Relatório

0

No creo que pueda hacer esto con solo una expresión regular de JavaScript (bueno, no a menos que enumere todas las combinaciones posibles ) . Las expresiones regulares en algunos otros entornos pueden hacerlo, pero no JavaScript.

Sin embargo, es bastante sencillo hacer coincidir un carácter en minúscula seguido de un carácter en mayúscula y luego filtrar aquellos en los que uno no es el equivalente en minúscula del otro:

 const str = "abcaAcvbBklmM"; const results = []; for (const [, lower, upper] of str.matchAll(/([az])([AZ])/g)) { if (lower === upper.toLocaleLowerCase()) { results.push(lower + upper); } } console.log(results);

Cómo funciona eso:

  • La expresión regular /([az])([AZ])/g coincide con una letra minúscula seguida de una letra mayúscula (pero no son necesariamente la "misma" letra), capturando cada una en un grupo de captura.
  • matchAll coincide con todas las ocurrencias de eso en una cadena, devolviendo un iterador para los resultados.
  • El bucle for-of recorre los resultados del iterador. Los resultados de matchAll son una matriz aumentada,¹ donde el primer elemento de la matriz es la coincidencia general, seguido de elementos para cualquier grupo de captura. El código utiliza la desestructuración en el for-of para elegir el segundo y el tercer elemento de la matriz (los dos grupos de captura).
  • Si la primera letra coincide con la segunda letra convertida a minúsculas, es una coincidencia y la conservamos.

También podemos hacer esto con varios pases utilizando métodos de matriz en lugar de un solo for-of :

 const str = "abcaAcvbBklmM"; const results = [...str.matchAll(/([az])([AZ])/g)] .filter(([, lower, upper]) => lower === upper.toLocaleLowerCase()) .map(([match]) => match); console.log(results);


¹ Este código no usa las partes aumentadas de la matriz, pero básicamente, además de ser una matriz, tiene una propiedad index que dice dónde ocurrió la coincidencia, una propiedad de groups que contiene información del grupo de captura (que podríamos haber usado, pero fue igual de fácil de usar los elementos de la matriz para esta expresión regular simple) y una propiedad de input con la cadena original.

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