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

139
Vistas
Orden de Operaciones en Expresiones Regulares (resolviendo un desafío)

Estoy trabajando en un problema de FreeCodeCamp que me obliga a desarrollar una expresión regular que cumpla con estos cuatro requisitos:

  • Los nombres de usuario solo pueden usar caracteres alfanuméricos.
  • Los únicos números en el nombre de usuario deben estar al final. Puede haber cero o más de ellos al final. El nombre de usuario no puede comenzar con el número.
  • Las letras del nombre de usuario pueden ser minúsculas y mayúsculas.
  • Los nombres de usuario deben tener al menos dos caracteres. Un nombre de usuario de dos caracteres solo puede usar letras del alfabeto como caracteres.

Lo que he decidido es /[az]/ig , que cubre todos los casos de prueba excepto los tres siguientes:

  • Su expresión regular no debe coincidir con la cadena BadUs3rnam3
  • Su expresión regular debe coincidir con la cadena Z97
  • Su expresión regular no debe coincidir con la cadena c57bT3

Lo que me confunde es que si agrego números ( \d ) en mi expresión regular , algunos de mis requisitos más simples ("La expresión regular debe coincidir con JACK ") ahora son incorrectos.

Estaba pensando que podría hacer algo como:

 /[a-b+?]*\d/

o esto

 /[ab^0-9$]/

Pero eso tira las cosas.

¿Puede alguien echarme una mano y explicar cómo podría funcionar esto?

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

0

Los patrones que probaste no coinciden porque:

  • El patrón [a-b+?]*\d coincide con los caracteres opcionales a b + o ? seguido de un solo dígito, lo que hace que el dígito sea obligatorio y coincida con los caracteres no permitidos

  • El patrón [ab^0-9$] solo coincide con un solo carácter a b ^ dígito 0-9 o $ y también coincide con caracteres no permitidos


Puede hacer coincidir 2 o más caracteres az seguidos de dígitos opcionales, o hacer coincidir un solo carácter az seguido de 2 o más dígitos.

 ^[az](?:[az]+\d*|\d{2,})$

Explicación

  • ^ Comienzo de cadena
  • [az] Siempre comienza con un char az
  • (?: grupo de no captura
    • [az]+\d* Coincide con 1 o más caracteres az y dígitos opcionales
    • | O
    • \d{2,} Coincide con 2 o más dígitos
  • ) Cerrar grupo de no captura
  • $ Fin de la cadena

Demostración de expresiones regulares

 const regex = /^[az](?:[az]+\d*|\d{2,})$/i; [ "aa", "JACK", "abc", "ab1", "Z97", "BadUs3rnam3", "c57bT3", "a", "0", "01", "a1", "a", "ab1a" ].forEach(s => console.log(`${s} --> ${regex.test(s)}`));

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