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

557
Visualizações
mecanografiado Yup validación o condición con expresiones regulares usando problema de coincidencias

Estoy tratando de asegurarme de que solo se use un tipo de carácter especial (punto y coma, coma o espacio) en una cadena.

Caso válido:

  • Puede contener letras alfanuméricas y números.
  • Puede contener caracteres especiales: /.
  • Puede contener solo un tipo de caracteres especiales de: espacio, punto y coma o coma en la cadena

por ejemplo, esto debería coincidir ya que solo usa un tipo de carácter especial (punto y coma): https://hello.com/example1;https://hello.com.com/example2;https://hello.com.com /ejemplo3

Esto debería fallar ya que mezcla dos tipos de caracteres especiales (espacio y punto y coma)

https://hola.com/ejemplo1; https://hola.com.com/ejemplo2 ; https://hola.com.com/ejemplo3

Este es mi código:

 const myValidation = yup .string() .matches(/^([A-Za-z0-9://,\\.]|[A-Za-z0-9:// \\.]|[A-Za-z0-9://;\\.])+$/, 'Please separate each with a comma, space or semicolon') .required();

Cuando solo tengo /^([A-Za-z0-9://,\\.]+$/ funciona correctamente para hacer coincidir solo la cadena si solo tiene una coma como carácter especial: https://hello.com/example1,https://hello.com.com/example2,https://hello.com.com/example3

pero tan pronto como agrego las otras condiciones /^([A-Za-z0-9://,\\.]|[A-Za-z0-9:// \\.]|[A-Za-z0-9://;\\.])+$/ comienza a permitir caracteres especiales de punto y coma, espacio y coma en la cadena al mismo tiempo (el caso no válido)

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Para los casos válidos, puede usar un grupo de captura con una referencia inversa \1 para asegurarse de que el "carácter especial" sea el mismo delimitador entre las coincidencias.

 ^[A-Za-z0-9:/.]+(?:([ ,;])[A-Za-z0-9:/.]+(?:\1[A-Za-z0-9:/.]+)*)?$

El patrón coincide:

  • ^ Comienzo de cadena
  • [A-Za-z0-9:/.]+ Match 1+ de los caracteres permitidos
  • (?: Grupo de no captura para hacer coincidir como una parte completa
    • ([ ,;]) Grupo de captura 1 , haga coincidir uno de los delimitadores
    • [A-Za-z0-9:/.]+ Match 1+ de los caracteres permitidos
    • (?:\1[A-Za-z0-9:/.]+)* Opcionalmente, repetir una referencia inversa al mismo delimitador y nuevamente 1+ de los caracteres permitidos
  • )? Cierre el grupo de no captura y hágalo opcional
  • $ Fin de la cadena

Vea una demostración de expresiones regulares .

 const regex = /^[A-Za-z0-9:/.]+(?:([ ,;])[A-Za-z0-9:/.]+(?:\1[A-Za-z0-9:/.]+)*)?$/; [ "https://hello.com/example1;https://hello.com.com/example2;https://hello.com.com/example3", "https://hello.com/example1; https://hello.com.com/example2 ;https://hello.com.com/example3", "https://hello.com/example1" ].forEach(s => console.log(`${regex.test(s)} --> ${s}`) );


Si debe haber al menos un solo delimitador presente, puede acortar el patrón a:

 ^[A-Za-z0-9:/.]+([ ,;])[A-Za-z0-9:/.]+(?:\1[A-Za-z0-9:/.]+)*$

Si las cadenas deben comenzar con http:// o https:// , podría usar:

 ^https?:\/\/[A-Za-z0-9:/.]+(?:([ ,;])https?:\/\/[A-Za-z0-9:/.]+(?:\1[A-Za-z0-9:/.]+)*)?$

Vea otra demostración de expresiones regulares .

about 4 years ago · Juan Pablo Isaza Relatório

0

es solo uno

 function isOnlyOne() { let s = "zy,,aemnofgbcjkhilpqasdfrstuvrhfwx"; console.log([...new Set(s.split("").filter(e => e.match(/[;, ]/)))].length==1); //return [...new Set(s.split("").filter(e => e.match(/[az]/)))].length==26; }
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