PHP 正则表达式验证在 Email-ID/string 中最多只允许 1-5 个点

PHP Regular Expression validation to allow only upto 1-5 dots in a Email-ID/string

在 PHP 中,如何添加回归来验证 Email-ID/string

中包含超过 5 个点 (.) 的字符串

例如:asdf.bn.jk.ui.tyqwer.sdfg.qw12@gmail.com

如果超过5或7个点,我需要显示验证消息。 请帮忙。

我不会在这上面使用正则表达式,只需在分隔符上拆分字符串,计算项目并减去 1

$s = 'asdf.bn.jk.ui.tyqwer.sdfg.qw12@gmail.com';
$dotCount = count(explode('.', $s)) - 1

尝试 substr_count(); 功能,例如:

$email = 'asdf.bn.jk.ui.tyqwer.sdfg.qw12@gmail.com';
echo substr_count($email, '.');

请注意这一点,因为拥有一个带有许多点的合法电子邮件地址是完全可以接受的。有些域名甚至有几个点:

sir.richard.g.smith.iii.1234@mortgages.loancompany.co.uk

当您开始根据合法性假设过滤掉电子邮件时,您最终将阻止合法且恰好有一个非常长/多点的电子邮件地址的人。

正如 Hamham 所说,只需将 filter_var() 与 FILTER_VALIDATE_EMAIL:

一起使用
$mail = filter_var($email, FILTER_VALIDATE_EMAIL);

它应该验证电子邮件地址是否正确(它适用于所有电子邮件地址,只要它们具有 FQDN 域),然后您可以让垃圾邮件过滤器负责确定是否合法。那是垃圾邮件过滤器的工作,而不是电子邮件地址解析器的工作。