使用ng-pattern的多个电子邮件的正则表达式

时间:2014-06-03 16:33:12

标签: javascript regex angularjs email

我正在尝试使用ng-pattern过滤掉大多数主要的电子邮件地址。

这是我的正则表达,我承认自己并不精通。

<input type="email" name="email" ng-model='email.userInput' 
placeholder="Please enter your work email" 
ng-pattern="/^[A-Z0-9._%+-]+@(yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)/">

我只想在上面列出的电子邮件中失败...只是朝着正确的方向迈出了一步。

1 个答案:

答案 0 :(得分:2)

将您的无效电子邮件域的交替组更改为否定前瞻((?!...)):

^[A-Z0-9._%+-]+@(?!yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)

Demo


详细说明,环视是零宽度断言,意味着它实际上并不匹配任何字符。由于这是一个负面的预测,一旦我们匹配@,我们就会检查以确保它没有跟yahoo.com等。由于这是如何工作的,我们实际上可以简化很多这个(因为[A-Z0-9._%+-]+可能无法覆盖各种各样的电子邮件,其中`type =&#34; email&#34;应该为我们验证)。我个人会使用something like this

@(?!(?:yahoo|gmail|msn|hotmail|live)\.com|$)

这只会匹配@符号,只要它们后面没有yahoo / gmail / etc,.com和字符串的结尾。

相关问题