我正在尝试使用 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)/">
我只是想在上面列出的电子邮件上失败......只是寻找朝着正确方向迈出的一步。
最佳答案
将无效电子邮件域的交替组更改为否定前瞻 ((?!...)
):
^[A-Z0-9._%+-]+@(?!yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)
<小时/>
详细来说,环视是一个零宽度断言,这意味着它实际上不匹配任何字符。由于这是一个否定的前瞻,一旦我们匹配 @
,我们就会检查以确保它后面没有 yahoo.com
等。有效,我们实际上可以简化很多(因为 [A-Z0-9._%+-]+
可能无法涵盖广泛的电子邮件,而 `type="email"应该验证这一点为了我们)。我个人会使用something like this :
@(?!(?:yahoo|gmail|msn|hotmail|live)\.com|$)
这只会匹配 @
符号,前提是它们后面不跟 yahoo/gmail/etc、.com
和字符串结尾。
关于javascript - 使用 ng-pattern 的多封电子邮件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24020392/