0

需要正则表达式来检测first.second@domain.tld

但没有检测到([a-z0-9A-Z])@domain.tld

有效的:abc123XYZ@domain.tld

无效的:abc12.de456@domain.tld

我承认电子邮件地址中的句号是合法@的,但需要检测这种情况。

4

3 回答 3

2

Assuming that you've already validated this as a proper email address:

\..*@

Which means: A ., then a sequence of 0 or more characters, then a @

于 2013-03-11T22:06:22.983 回答
1

您不需要正则表达式,只需将句点的位置与 at 符号进行比较:

// assuming there's already an `@` in $email
if (($p = strpos($email, '.')) !== false && $p < strpos($email, '@')) {
    echo 'invalid';
}

如果@电子邮件地址中没有,则不会打印'invalid',因为任何整数都不会严格小于false.

于 2013-03-12T00:59:35.560 回答
0

\.(?=.*@) 应该做的伎俩。

于 2013-03-11T22:05:55.150 回答