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

193
Vistas
¿Cómo detectar letras y su formato en mayúsculas/minúsculas de dos caracteres que deben compararse entre sí?

Necesito conseguir:

  • Si alguno de los caracteres no es una letra, devuelve -1
  • Si ambos caracteres son el mismo caso, devuelve 1
  • Si ambos caracteres son letras, pero no el mismo caso, devuelve 0

Ejemplos:

'a' y 'g' devuelve 1

'A' y 'C' devuelve 1

'b' y 'G' devuelve 0

'B' y 'g' devuelve 0

'0' y '?' devuelve -1

Ahora mi código no es correcto:

 function sameCase(a, b) { if (a.match(/az/) && b.match(/az/)) { return 1; } if (a.match(/AZ/) && b.match(/AZ/)) { return 0; } if (b.match(/az/) && a.match(/AZ/)) { return 0; } return -1; } console.log(sameCase('a', 'b')); console.log(sameCase('A', 'B')); console.log(sameCase('a', 'B')); console.log(sameCase('B', 'g')); console.log(sameCase('0', '?'));

Ayuda por favor..

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Estás usando expresiones regulares incorrectamente. Deberías haber usado /[az]/ si quieres comprobar que tu carácter es una letra de la a a la z.

 function sameCase(a, b){ if (a.match(/[az]/) && b.match(/[az]/)) { return 1; } if (a.match(/[AZ]/) && b.match(/[AZ]/)) { return 1; } if (b.match(/[az]/) && a.match(/[AZ]/)) { return 0; } if (a.match(/[az]/) && b.match(/[AZ]/)) { return 0; } return -1; } console.log(sameCase('a', 'b')); console.log(sameCase('A', 'B')); console.log(sameCase('a', 'B')); console.log(sameCase('B', 'g')); console.log(sameCase('0', '?'));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Está utilizando una sintaxis incorrecta para las expresiones regulares.

/az/ coincide con la cadena az . Si desea probar un rango de caracteres, debe envolver el rango en [] .

Además, sus valores de retorno no coincidieron con las expectativas que describió.

 function sameCase(a, b) { if ( (a.match(/[az]/) && b.match(/[az]/)) || (a.match(/[AZ]/) && b.match(/[AZ]/)) ) { return 1; } if ( (b.match(/[az]/) && a.match(/[AZ]/)) || (b.match(/[AZ]/) && a.match(/[az]/)) ) { return 0; } return -1; } console.log(sameCase('a', 'b')); console.log(sameCase('A', 'B')); console.log(sameCase('a', 'B')); console.log(sameCase('B', 'g')); console.log(sameCase('0', '?'));

about 4 years ago · Juan Pablo Isaza Denunciar

0

+++ Solo como información adicional +++

Construyendo sobre el enfoque de connexo y convirtiéndolo en una solución que no solo cubra las letras mayúsculas y minúsculas latinas básicas, uno podría reemplazar cada clase de carácter con su contraparte de escapes de propiedades unicode que además cubre cada una mucho más amplia variedad de personajes...

 // based on basic latin letter character classes. function sameCaseBasicLatin(a, b) { if ( (a.match(/[az]/) && b.match(/[az]/)) || (a.match(/[AZ]/) && b.match(/[AZ]/)) ) { return 1; } if ( (b.match(/[az]/) && a.match(/[AZ]/)) || (b.match(/[AZ]/) && a.match(/[az]/)) ) { return 0; } return -1; } // ... ok ... console.log('`sameCaseBasicLatin` invoked with basic latin letters'); console.log(sameCaseBasicLatin('a', 'b')); console.log(sameCaseBasicLatin('A', 'B')); console.log(sameCaseBasicLatin('a', 'B')); console.log(sameCaseBasicLatin('B', 'g')); console.log(sameCaseBasicLatin('0', '?')); // ... but ... not ok. console.log('`sameCaseBasicLatin` invoked with diacritic latin letters'); console.log(sameCaseBasicLatin('â', 'ê')); console.log(sameCaseBasicLatin('Â', 'Ê')); console.log(sameCaseBasicLatin('â', 'Î')); console.log(sameCaseBasicLatin('Ô', 'ä')); console.log(sameCaseBasicLatin('-', '#')); // make use of unicode property escapes. function sameCaseLetters(a, b) { // lowercase letter as unicode property escape. const regXLowerCaseLetter = (/\p{Ll}/u); // uppercase letter as unicode property escape. const regXUpperCaseLetter = (/\p{Lu}/u); if ( (regXLowerCaseLetter.test(a) && regXLowerCaseLetter.test(b)) || (regXUpperCaseLetter.test(a) && regXUpperCaseLetter.test(b)) ) { return 1; } if ( (regXLowerCaseLetter.test(a) && regXUpperCaseLetter.test(b)) || (regXUpperCaseLetter.test(a) && regXLowerCaseLetter.test(b)) ) { return 0; } return -1; } // ... ok ... console.log('`sameCaseLetters` invoked with basic latin letters'); console.log(sameCaseLetters('a', 'b')); console.log(sameCaseLetters('A', 'B')); console.log(sameCaseLetters('a', 'B')); console.log(sameCaseLetters('B', 'g')); console.log(sameCaseLetters('0', '?')); // ... and ... also ok. console.log('`sameCaseLetters` invoked with diacritic latin letters'); console.log(sameCaseLetters('â', 'ê')); console.log(sameCaseLetters('Â', 'Ê')); console.log(sameCaseLetters('â', 'Î')); console.log(sameCaseLetters('Ô', 'ä')); console.log(sameCaseLetters('-', '#'));
 .as-console-wrapper { min-height: 100%!important; top: 0; }

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