Necesito modificar la exp:
/^[-\p{L}\d]+$/uEl 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 matchYa probé algunos patrones, pero no funcionan correctamente:
/^[-\p{L}\d{0,3}]+$/u /^[-\p{L}]+[\d]{0,3}+$/u /^([-\p{L}]+)([\d]+){0,3}$/uLos 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:
[-\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 + )[-\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)([-\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 cadenaDemostración de expresiones regulares
De lo contrario, puede afirmar que la cadena no está vacía usando (?!$)
^(?!$)(?:[\p{L}-]*\d){0,3}[\p{L}-]*$