使用preg_match检查简单的电子邮件地址

时间:2012-05-14 23:52:09

标签: regex

我有一个简单的正则表达式来查找文本中的电子邮件地址,但即使我没有看到错误,它也不起作用。

$addr=array();
$t='Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean fermentum risus id tortor. Morbi leo mi, nonummy eget tristique non, rhoncus non leo. Donec quis nibh at felis congue commodo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos aaa@bbb.com. Aliquam ccc@ddd.net ornare wisi eu metus.';
if(preg_match_all('~[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}~',$t,$addr, PREG_SET_ORDER)){
  echo 'found';
}

我也尝试过我发现的这个版本,但它也不起作用:

if(preg_match_all('/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/',$t,$addr, PREG_SET_ORDER)){

3 个答案:

答案 0 :(得分:1)

您正在匹配全部大写的电子邮件。您需要执行[A-Za-z],或在preg_match

上设置不区分大小写的标记

答案 1 :(得分:1)

这也适用于匹配模式并且最短:

[0-z.%-]+@[0-z.-]+\.[A-z]{2,4}

这是有效的,因为0-z涵盖了A-Za-z0-9_,A-Z也涵盖了A-Z和a-z

我在红宝石中开发,你可以在http://rubular.com/r/PdbH1BjWMs

看到这个“在行动中”

答案 2 :(得分:0)

包括小写字母类:

if(preg_match_all('~[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[A-Z]{2,4}~',$t,$addr, PREG_SET_ORDER)){
  echo 'found';
}

...注意 a-z

相关问题