我正在尝试使用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)/">
我只想在上面列出的电子邮件中失败...只是朝着正确的方向迈出了一步。
答案 0 :(得分:2)
将您的无效电子邮件域的交替组更改为否定前瞻((?!...)
):
^[A-Z0-9._%+-]+@(?!yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)
详细说明,环视是零宽度断言,意味着它实际上并不匹配任何字符。由于这是一个负面的预测,一旦我们匹配@
,我们就会检查以确保它没有跟yahoo.com
等。由于这是如何工作的,我们实际上可以简化很多这个(因为[A-Z0-9._%+-]+
可能无法覆盖各种各样的电子邮件,其中`type =&#34; email&#34;应该为我们验证)。我个人会使用something like this:
@(?!(?:yahoo|gmail|msn|hotmail|live)\.com|$)
这只会匹配@
符号,只要它们后面没有yahoo / gmail / etc,.com
和字符串的结尾。