我正在编写一个正则表达式(正则表达式),用于在输入框中添加多个电子邮件ID,但具有以下条件:
,
所以我创建了这个正则表达式:
^(([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/
答案 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*)*$/