PHP匹配email正则一个 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

PHP匹配email正则一个

phpmaster看到的,文章太长了,不想翻译,简单说下吧.

^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$

^ 代表行头, $ 代表行结尾

[A-Za-z0-9-_.+%]+

是@头面的内容,只允许a-z的大小写字母,0-9的数字和dash (-),underline (_) ,点号(.)加号和百分号,方括号外的+表示里面的内容至少要出现一次,否则匹配失败。
然后是email的@符号,然后是中间部分。与前面类似,只不过这里只允许大小写字母,数字,连接符-和点号。+号表示至少出现一次。
然后是一个点号,注意这里,在方括号外的点号是有特殊意义的,因此要用反斜杠转义。
最后是域名结尾部分了,只允许2到4个字母。

下面是phpmaster给出的例子:


$formattedBlock = preg_replace(
    '/([A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4})/U',
    "\\1", $blockOText);
";
    }
}

不过这个正则正如我上面说的,很简单,因此,并不能真正的校验一个email地址是否是合法的。
随便举两个例子,这下面两个都不是合法的email地址,如用上面的正则,它会放行的 :arrow:

user@.ihacklog.com
user@..com

Tagged in :

All Comments (0)
Gravatar image
No Comments