Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda