Tengo esta expresión que es casi lo que necesito:
/(?=^.{5,12}$)(^[a-zA-Z\u0590-\u05fe]{0,4}[0-9]{3,8}[a-zA-Z\u0590-\u05fe]{0,4}$)/excepto que solo necesito permitir 4 letras en total (4 al principio y 0 al final, 3 y 1, 2 y 2, 0 y 4, etc.)
entradas permitidas: 11abcd11 1abcdefg123 abcd1234
entradas no permitidas: 1abcd11 abcd123 1abcd12
¿Hay una manera de lograr esto? ¡Gracias!
Para asegurarse de que hay exactamente cuatro letras en la cadena, puede usar
^(?=.{5,12}$)(?=(?:[^a-zA-Z\u0590-\u05fe]*[a-zA-Z\u0590-\u05fe]){4}[^a-zA-Z\u0590-\u05fe]*$)[a-zA-Z\u0590-\u05fe]{0,4}[0-9]{3,8}[a-zA-Z\u0590-\u05fe]{0,4}$Vea la demostración de expresiones regulares
El (?=(?:[^a-zA-Z\u0590-\u05fe]*[a-zA-Z\u0590-\u05fe]){4}[^a-zA-Z\u0590-\u05fe]*$) la búsqueda anticipada positiva asegura que haya cuatro secuencias de cero o más "sin letras" seguidas de una "letra" y luego hay cero o más "sin letras" hasta el final de la cadena.
Si puede apuntar a motores compatibles con ECMAScript 2018+, puede usar una versión compatible con Unicode:
/^(?=.{5,12}$)(?=(?:\P{L}*\p{L}){4}\P{L}*$)\p{L}{0,4}[0-9]{3,8}\p{L}{0,4}$/u Vea esta demostración de expresiones regulares , donde \p{L} coincide con letras. También puede reemplazarlo con \p{Alphabetic} que también coincide con letras que son números romanos.