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

179
Vistas
Regex solo permite guiones entre caracteres

Tengo esta expresión regular ^[A-ZÆØÅa-zæøå\ \-]{2,50}$ para validar nombres. ¿Cómo puedo hacer que permita solo un "-". Quiero que acepte nombres como este:

 Janet Smith-Johnson Mary-Ann Johnson Sara Mary John-Smith Sara Johnson Sara Mary Johnson

Pero no puede permitir nombres que comiencen con - y terminen con - . Me gusta:

 -Janet Mary Mary-
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede hacer coincidir su clase de personaje sin espacios, luego, opcionalmente, repetir un espacio y nuevamente usar la clase de personaje sin espacios.

Luego, opcionalmente, haga coincidir - y el mismo mecanismo nuevamente.

 ^(?=.{2,50}$)[A-ZÆØÅa-zæøå]+(?: [A-ZÆØÅa-zæøå]+)*(?:-[A-ZÆØÅa-zæøå]+(?: [A-ZÆØÅa-zæøå]+)*)?$

El patrón en partes coincide con:

  • ^ Comienzo de cadena
  • (?=.{2,50}$) Afirmar 2 - 50 caracteres
  • [A-ZÆØÅa-zæøå]+ Coincide con lo que aparece en la clase de caracteres sin espacios
  • (?: [A-ZÆØÅa-zæøå]+)* Opcionalmente repetir la clase de carácter precedida por un espacio
  • (?: Grupo de no captura para emparejar como un todo
    • -[A-ZÆØÅa-zæøå]+ Coincide con lo que aparece en la clase de caracteres sin espacios
    • (?: [A-ZÆØÅa-zæøå]+)* Opcionalmente repetir la clase de carácter precedida por un espacio
  • )? Cierre el grupo de no captura y hágalo opcional
  • $ Fin de la cadena

Demostración de expresiones regulares

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes usar

 ^(?=.{2,50}$)(?!(?:.*-){2})[A-ZÆØÅa-zæøå]+(?:[- ][A-ZÆØÅa-zæøå]+)*$

Vea la demostración de expresiones regulares .

Si está utilizando la expresión regular en C# o con el indicador u en JavaScript compatible con el estándar ECMAScript 2018+, también puede hacer coincidir cualquier letra Unicode con \p{L} :

 ^(?=.{2,50}$)(?!(?:.*-){2})\p{L}+(?:[- ]\p{L}+)*$

Detalles :

  • ^ - comienzo de la cadena
  • (?=.{2,50}$) - de dos a cincuenta caracteres en la cadena permitida
  • (?!(?:.*-){2}) (o (?!(?:[^-]*-){2}) en el código real es más eficiente) - no se permiten dos guiones
  • [A-ZÆØÅa-zæøå]+ - una o más letras del conjunto ( \p{L} coincide con cualquier letra Unicode)
  • (?:[- ][A-ZÆØÅa-zæøå]+)* - cero o más secuencias de espacio o - y luego una o más letras
  • $ - final de la cadena.
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