Estoy tratando de establecer la longitud máxima de cadena entre comas en 4.
Estoy usando ^([^,?]{0,4},)*[^,?]{0,4}$ , que funciona bien. Sin embargo, si el usuario agrega un espacio antes de la palabra, el código actual cuenta ese espacio en blanco.
Ejemplo: 'esto', 'será', 'estar', 'bien'. <-- esto funciona.
'esto', 'será', 'no', 'funcionará' <-- esto no funciona. Observe el espacio en blanco antes del 'will'. ¿Cómo modifico mi expresión regular para que no cuente este espacio en blanco?
Puedes usar
Validators.pattern('\\s*[^\\s,?]{0,4}(?:\\s*,\\s*[^\\s,?]{0,4})*\\s*') Validators.pattern(/^\s*[^\s,?]{0,4}(?:\s*,\s*[^\s,?]{0,4})*\s*$/) Vea la demostración de expresiones regulares . Ajuste el patrón eliminando \s* en cualquier lugar que considere adecuado.
Cada vez que vea una expresión regular que coincida con el probador de regex101.com y no funcione en su código, consulte siempre el enlace de la página del generador de código . Vea que Regex no funciona en Angular Validators.pattern() mientras trabaja en probadores de expresiones regulares en línea y Regular expression funciona en regex101.com, pero no en prod .
Detalles :
^ - comienzo de la cadena\s* - cero o más espacios en blanco[^\s,?]{0,4} : cero a cuatro caracteres que no sean espacios en blanco, coma y un signo de interrogación(?:\s*,\s*[^\s,?]{0,4})* - cero o más secuencias de una coma encerrada con cero o más espacios en blanco seguidos de cero a cuatro caracteres que no sean espacios en blanco, coma y un signo de interrogación\s* - cero o más espacios en blanco$ - final de la cadena