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

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

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 Report

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 Report

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 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!