我必须验证公司的电子邮件。正则表达式应验证它是否来自公司,可能来自John。
我的正则表达式现在看起来像这样:
/[a-z0-9.]*(john)[a-z0-9.]*@mycompany\.com/
唯一的问题是,它允许点在错误的位置。 我看到这封电子邮件有效:
john@mycompany.com
smith.john@mycompany.com
john.smith@mycompany.com
但我不应该看到有效的这些:
john.@mycompany.com
.john@mycompany.com
答案 0 :(得分:1)
/^([a-z0-9][a-z0-9.]*)?(john)([a-z0-9.]*[a-z0-9])?@mycompany\.com$/
这应确保(john)
之前/之后的字符分别以.
开头/结尾。
答案 1 :(得分:1)
替代解决方案
^(?!\.)[a-z0-9.]*(john)(?:[a-z0-9]|\.(?!@))*@mycompany\.com$
答案 2 :(得分:0)
请尝试
\w+(john)?\.?\w+?@mycompany\.com
匹配
john@mycompany.com
smith.john@mycompany.com
john.smith@mycompany.com
但不是
john.@mycompany.com
.john@mycompany.com
在最后一种情况下,它实际上只抓取了点
之后的部分john@mycompany.com
答案 3 :(得分:0)
当我写完答案时,你已经得到了很多答案。 :-)好的,这是你可以测试的其他内容。
^([[:alnum:]]+\.)?john(\.[[:alnum:]]+)?@mycompany\.com
上测试过
如果我在 john 之前和之后理解得很好,那么应该用点.