【问题标题】:AngularJS - Remove leading and trailing whitespace from input-box using regexAngularJS - 使用正则表达式从输入框中删除前导和尾随空格
【发布时间】:2015-11-15 02:04:46
【问题描述】:

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

  1. 多个电子邮件 ID 必须用逗号分隔 ,
  2. 至少需要一个电子邮件 ID
  3. 输入字段中不应有任何空格。

所以我创建了这个正则表达式:

^(([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/

【问题讨论】:

  • 使用ng-trim="false"。看看this fiddle。是你需要的吗?
  • @stribizhev:你成就了我的一天。我正在努力找出过去 2 小时的问题。感谢帮助。请发布答案。我会接受的。 :)

标签: regex angularjs html


【解决方案1】:

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

documentation:

ngTrim(可选)

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

(默认:真)

【讨论】:

    【解决方案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*)*$/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多