Estoy escribiendo una expresión regular (regex) para agregar varios ID de correo electrónico en un cuadro de entrada con las siguientes condiciones:
,
Así que creé esta expresión regular:
^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([,.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
Lo probé en regex101.com y funciona como un encanto https://regex101.com/r/bU7rU8/1
Pero cuando lo integro con código, funciona, pero falla en espacios en blanco iniciales y finales .
Aquí está el enlace de demostración: http://jsfiddle.net/2G8gA/330/
AngularJS recorta la entrada de forma predeterminada, por lo que debe utilizar ng-trim="false"
para pasar los espacios en blanco iniciales y finales a la expresión regular del pattern
.
Ver documentación :
ngTrim (opcional)
Si se establece en
false
Angular no recortará automáticamente la entrada. Este parámetro se ignora parainput[type=password]
controles deinput[type=password]
, que nunca recortarán la entrada.(predeterminado: verdadero)
¿Desea espacios iniciales / finales permitidos en toda la cadena, o alrededor de cada dirección individual?
Para el primero, su expresión regular debería ser
/^(\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([,.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+\s*)*$/
y para el último
/^(\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25}\s*)+([,.](\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+\s*)*$/