在我的网站上,我使用以下正则表达式验证电子邮件。
^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$
我的怀疑是:
我可以使用以下正则表达式来实现相同的功能吗?
^[a-zA-Z0-9_.-]+@[a-zA-Z0-9.-]+.[a-z]{2,4}$
我之所以这样问,我试着研究其含义。所以我感到困惑
[a-zA-Z0-9_.-]
涵盖[a-zA-Z0-9]
和[a-zA-Z0-9_-]
我不确定这一点,因为我是初学者。
我从
获得正则表达式我在http://regex101.com/#pcre检查了两个正则表达式。我发现结果没有任何区别。可能是因为我的知识有限
请澄清一下。感谢所有提前
答案 0 :(得分:5)
也许它不是你想要的答案,但我不得不说我最终会进行这种电子邮件验证:^.+@.+\..{2,}$
修剪后。
检查什么?存在一些符号,@本身,一些其他符号,点,以及顶级域的至少两个符号。它说" Dude,应该有一封电子邮件,而不是你热闹的用户名"。这就足够了,我猜。
顺便说一下,.[a-z]{2,4}$
是检查TLD的一个巨大错误,因为很少有热门域超过4个符号(即.travel
)和a lot of less popular ones。
为什么我认为您不需要详细验证?首先,无论如何你都会错过there are a lot of requirements。您知道电子邮件地址中允许使用西里尔符号吗?
而且,请想一想这个验证你想要什么?避免错误的电子邮件?你赢了。有人会输入一封符合您所有要求的电子邮件,但无论如何它都是不正确的。 email@gmial.com
是一个好人吗?不会。它会被regexp检查吗?我很害怕,答案是" no"再一次。
因此,最好解释用户应提供有效的电子邮件以获取确认邮件并进行解释"如果您不是那位在mysite.com注册的人,请只是忽略这封信"在电子邮件文本中。
因为regexp永远不会过滤掉,但是你可能因为它而丢失了一些奇怪的电子邮件地址的用户。
因为这应该是你问题的答案:
4
。如果你需要原始逻辑,你就不能缩短它。.mail@mail.com
,a@gmail.com
,gmail@a.com