Groups
Groups
Sign in
Groups
Groups
学习日志
Conversations
About
Send feedback
Help
用PHP刚写了个验证E-mail地址的正则表达式
0 views
Skip to first unread message
陈立强
unread,
May 21, 2005, 10:49:11 AM
5/21/05
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Google-Group-学习日志
刚刚准备写一个用户注册的程序,就想到了经典的E-mail地址验证,由于没太大把握,且原来只看过一遍正则表达式的内容,于是就边翻书边写着,弄了个近个小时才写了出来(菜鸟的经典效率
):
Quote:
<form name="form1" method="post" action="">
<input type="submit" name="Submit" value="提交">
<input name="email" type="text" id="email">
</form>
<?php
echo $email.":";
$pattern = '^[a-zA-Z][a-zA-Z0-9]{2,}@{1}[a-zA-Z0-9]{3,}\.{1}[a-zA-Z]{2,5}$';
if(!eregi($pattern,$email)){
echo "是不合法的,请输入正确的E-mail地址!";
}else{
echo "是合法的!";
}
?>
下面是对表达式的详解:
if后面的内容就是判断$email(表单提交来的)的内容是否符合$pattern所规定的,如果不符合返回假,就输出不合法提示。。。。
所以了,这里关键是要写好$pattern的内容了。
首先判断用户名
^[a-zA-Z]
表示是否是字母开头(一般邮箱用户名只允许英文字母开头的。
[a-zA-Z0-9]{2,}
表示第二字符开始是字母或数字且至少出现两次以上(同理邮箱用户名一般要3个字符以上)。
接着判断是否有邮箱的
@
标志,这个最简单了,直接弄个
@
标志在用户名后面,但是一般这个标志只出现一个,所以用{1}来限制
再接下来判断域名了
[a-zA-Z0-9]{3,}
表示由字母和数字组成的字符串出现3次以上(因为我发现我注册域名时要求我要至少三个字符
,所以猜测没有三个字符的域名
)
再判断域名后的"."
没错,就是那个
\.{1}
。
最后判断域名后缀(
LABEL:
写到这,发现我这个表达式问题不小,下面会讲到)
[a-zA-Z]{2,5}$
表示字母重复出现2到5次以上(还没见到只有一个后缀的顶级域名,至于长度,本人最长只见过info为四个,5是为了防止我孤陋寡闻而设的。)最后的$表示,这个字符串是出现在尾部的(总感觉有点多余的,但是书上有提到这个符号,不好好利用总会觉得自己水平差了一截
,就蛮放进去湊个热闹)。
这里似乎对一个E-mail地址判断得很完整了。
LABEL:
{但是发现.com.cn这类域名判断出现非法的提示
,现在只有继续想去了。}还有一个问题就是部分邮箱用户名是允许出现"
.
"的(如中华网),但是并没有进行表达式中并没有对其进行匹配。
什么//本来想写什么大家猜吧,反正写到这儿,发现LABEL:处提到的一个问题解决了,那就是最后的
\.[a-zA-Z\.]{2,5}
重新匹配一下(写到这,又刚刚发现我真的很粗心
(因为解决了.com.cn的问题,却忽略了.com的问题了
),于是就改进了一下。最后在点号后面添加了个*做匹配符,但是似乎验证的严格性降低了。继续想去。
Google-Group-学习日志
Attr_22484390182.gif
Attr_22484390112.gif
Chen Liqiang
unread,
May 21, 2005, 2:23:43 PM
5/21/05
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to stud...@googlegroups.com
理性了表达式的内容了
$pattern =
'^[a-zA-Z]([a-zA-Z0-9_-]){2,}@{1}([a-zA-Z0-9_-]){3,}(\.[a-zA-Z0-9_-]{2,5})+';
Reply all
Reply to author
Forward
0 new messages