AngularJS – Elimina los espacios en blanco iniciales y finales de la caja de entrada usando expresiones regulares

Estoy escribiendo una expresión regular (regex) para agregar varios ID de correo electrónico en un cuadro de entrada con las siguientes condiciones:

  1. Varios identificadores de correo electrónico deben estar separados por comas ,
  2. Necesita tener al menos un ID de correo electrónico
  3. No debería haber espacios en blanco en el campo de entrada.

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 para input[type=password] controles de input[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*)*$/