繁体   English   中英

正则表达式以匹配电子邮件

[英]regular expression to match emails

我遇到了特殊的问题,我有用户名字段,只有字母数字和。 - 和_是允许的,应始终以字母开头

这里是接受的例子

someone@mydomain.com
something1234@mydomain.com
someething.something@mydomain.com
something-something@mydomain.com
something_something@mydomain.com
something_1234@mydomain.com 
something.123@mydomain.com
something-456@mydomain.com

到目前为止我所做的是

[a-zA-Z0-9]+[._-]{1,1}[a-zA-Z0-9]+@mydomain.com

除了问题匹配之外,这符合我的所有要求

someone@mydomain.com
someont123@mydomain.com

但它甚至匹配

someone_someone_something@mydomain.com 

这不是必需的我真的没有得到如何解决我试过的这一件事

[a-zA-Z0-9]+[._-]{0}[a-zA-Z0-9]+@mydomain.com

但这也没有解决我的问题现在它接受了一切

something+455@mydomain.com 

这不是必需的,请帮帮我

如果你想做-. 可选,那么你必须用一个?替换{1,1} (量词:一次) ? (量词:一个或没有)这里:

 [a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+@mydomain.com

这个正则表达式也匹配没有分隔符-._较短地址的原因是你没有断言整个字符串,而只是它的一部分。 使用start ^和end $ anchors:

 ^[a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+@mydomain\.com$

这就是我们有filter_var($email, FILTER_VALIDATE_EMAIL)

如果电子邮件地址有效,那么您只需检查它是否以@domain.com结尾。 这可以通过strrpos($email, '@domain.com')完成strrpos($email, '@domain.com')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM