AngularJS - 使用正则表达式从输入框中删除前导和尾随空格

时间:2015-08-21 07:49:12

标签: regex angularjs html5

我正在编写一个正则表达式(正则表达式),用于在输入框中添加多个电子邮件ID,但具有以下条件:

  1. 必须使用逗号,
  2. 分隔多个电子邮件ID
  3. 至少需要一个电子邮件ID
  4. 输入字段中不应有任何空格。
  5. 所以我创建了这个正则表达式:

    ^(([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})+)*$
    

    我在regex101.com上测试了它,它的工作方式就像一个魅力https://regex101.com/r/bU7rU8/1

    但是当我将它与代码集成时,它可以正常运行,但是在前导空格和尾随空格时会失败。

    以下是演示链接:http://jsfiddle.net/2G8gA/330/

2 个答案:

答案 0 :(得分:11)

AngularJS默认修剪输入,因此您需要使用ng-trim="false"才能将前导和尾随空格传递到pattern正则表达式。

请参阅documentation

  

ngTrim (可选)

     

如果设置为false Angular不会自动修剪输入。 input[type=password]控件忽略此参数,这些控件永远不会修剪输入。

     

(默认值:true)

答案 1 :(得分:2)

您是否希望整个字符串或每个地址周围允许使用前导/尾随空格?

对于前者,你的正则表达式应该是

/^(\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*)*$/

和后者

/^(\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*)*$/