Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

297
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!