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

320
Vistas
PHP Regex: no se permiten más de 3 dígitos pero cualquier conteo para otros caracteres

Necesito modificar la exp:

 /^[-\p{L}\d]+$/u

El propósito es permitir un máximo de 3 dígitos en una cadena completa, pero se deben permitir caracteres de letras y guiones sin restricciones de cantidad. No importa dónde se encuentren los dígitos dentro de la cadena. Por ejemplo:

 test345 //this should match 345te-st //this should match 3454dtest //this shouldn\'t match

Ya probé algunos patrones, pero no funcionan correctamente:

 /^[-\p{L}\d{0,3}]+$/u /^[-\p{L}]+[\d]{0,3}+$/u /^([-\p{L}]+)([\d]+){0,3}$/u
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Los patrones que probó no funcionan correctamente y coinciden con un máximo de 3 dígitos en cualquier parte de la cadena porque entre los puntos de anclaje inicial y final:

  • Esta notación está completamente en una clase de caracteres [-\p{L}\d{0,3}]+ que coincide repitiendo 1+ veces cualquiera de los caracteres enumerados entre [...] (Por lo tanto, no hay límite de dígitos debido a el + )
  • Esta notación [-\p{L}]+[\d]{0,3}+ coincide 1+ veces [-\p{L}] seguido de 0-3 dígitos consecutivos (por lo que los dígitos no pueden estar al principio por ejemplo)
  • Esta notación ([-\p{L}]+)([\d]+){0,3} usa 2 grupos de captura, pero el orden aquí también es 1+ veces [-\p{L}] y 0- 3 dígitos consecutivos (solo aquí se repite el grupo de captura)

Si también se permiten cadenas vacías:

 ^(?:[\p{L}-]*\d){0,3}[\p{L}-]*$
  • ^ Comienzo de cadena
  • (?:[\p{L}-]*\d){0,3} Coincide 0-3 veces con repeticiones opcionales de [\p{L}-] y un solo dígito
  • [\p{L}-]* Coincidir con repeticiones opcionales de [\p{L}-] al final
  • $ Fin de la cadena

Demostración de expresiones regulares

De lo contrario, puede afirmar que la cadena no está vacía usando (?!$)

 ^(?!$)(?:[\p{L}-]*\d){0,3}[\p{L}-]*$

Demostración de expresiones regulares

over 4 years ago · Santiago Trujillo 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