正则表达式检测电子邮件地址中@之前的时间段

时间:2013-03-11 22:02:44

标签: regex email-validation

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

但未在([a-z0-9A-Z])@domain.tld

上检测到

有效:abc123XYZ@domain.tld

无效:abc12.de456@domain.tld

我认为某个时段在电子邮件地址中位于@之前是合法的,但需要检测该条件。

3 个答案:

答案 0 :(得分:2)

假设您已将此验证为正确的电子邮件地址:

\..*@

表示:.,然后是0个或更多字符的序列,然后是@

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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