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

213
Vistas
Regex Js debe tener 1 alfabeto y 1 carácter

la siguiente es mi expresión regular

regex: /^[a-zA-Z]+-.*(?=.*\d)(?=.*[a-zA-Z]).*-[0-9]+-[a-zA-Z]+-[0-9]+$/

las reglas generales son: alfabeto-alfanumérico-número-alfabeto-número

tengo un problema en .*(?=.*\d)(?=.*[a-zA-Z]).*

el resultado esperado para obtener un resultado exitoso para la parte alfanumérica es

  1. abc123
  2. 123abc
  3. 1abc23
  4. ab23ca

y fallar si

  1. a B C D e
  2. 12345

pero el resultado que obtengo es todo exitoso, incluye el resultado fallido esperado

  1. abc-abc-123-abc-123
  2. abc-123-123-abc-123

Veo que usar la búsqueda anticipada también obtendrá la entrada después del guión (-) del alfanumérico que hizo que tuviera éxito, aunque no es el resultado esperado.

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

0

Tu podrías intentar

 ^[a-zA-Z]+-(?![a-zA-Z]+-|\d+-)[a-zA-Z0-9]+-\d+-[a-zA-Z]+-\d+$

Utiliza esta búsqueda anticipada negativa para comprobar que la segunda subsecuencia no solo está formada por alfabetos o números.

 (?![a-zA-Z]+-|\d+-)

Alternativamente, puede usar esta anticipación positiva para verificar que la segunda subsecuencia esté formada por un dígito precedido de cualquier alfabeto o viceversa

 (?=[a-zA-Z]+\d|\d+[a-zA-Z])

Es importante usar una búsqueda anticipada para verificarlo justo al comienzo de la subsecuencia, y no use .* en esta situación, ya que podría consumir un - y verificar la secuencia incorrecta detrás de él.

Puede consultar el resultado de la prueba aquí

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para la parte alfanumérica, puede afirmar no solo dígitos hasta el siguiente guión.

Usando una coincidencia que no distingue entre mayúsculas y minúsculas:

 ^[az]+-(?!\d+-)[az]*\d[az\d]*-\d+-[az]+-\d+$
  • ^ Comienzo de cadena
  • [az]+- Combina 1+ caracteres az y -
  • (?!\d+-) Anticipación negativa, afirmar no solo los dígitos seguidos de -
  • [az]*\d[az\d]*- Coincide con caracteres opcionales az, coincide con un dígito y caracteres opcionales az o un dígito
  • \d+-[az]+-\d+ Emparejar dígitos - caracteres az - dígitos
  • $ Fin de la cadena

Demostración de expresiones regulares

 const regex = /^[az]+-(?!\d+-)[az]*\d[az\d]*-\d+-[az]+-\d+$/i; [ "abc-abc-123-abc-123", "abc-123-123-abc-123", "abc-abcde-123-abc-123", "abc-12345-123-abc-123", "abc-ab23ca-123-abc-123", "abc-1abc23-123-abc-123" ].forEach(s => console.log(`${s} --> ${regex.test(s)}`) );

about 4 years ago · Juan Pablo Isaza Denunciar

0

Por qué no:

 /([A-Za-z]+[0-9]+|[0-9]+[A-Za-z]+)/ -- or -- /[A-Za-z]/.test(val) && /[0-9]/.test(val) var cases = [ "abc123", "123abc", "1abc23", "ab23ca", // fail "abcde", "12345", "abc-abc-123-abc-123", // not clear if these should fail? "abc-123-123-abc-123" ]; cases.forEach(val => { var ok = /([A-Za-z]+[0-9]+|[0-9]+[A-Za-z]+)/.test(val) //var ok = /[A-Za-z]/.test(val) && /[0-9]/.test(val); console.log(val, ok); });
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