打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EMAIL校验 正则 讨论 求解
为了找实习开始学习PHP,因为学过C和PERL,所以练习了一个hello world后就开始伴随着google用PHP做网页了,现在做个
几个网站后,发现自己还没有系统得学习过PHP,于是找了本书开始从头细致地学习。昨天看到正则,想和大家讨论一下。
校验是正则用得最多的地方,这是我一年前写的EMAIL有效性校验代码:(见笑了,那时候是只知道正则的基本)
function IsMailValid  ( $mail ){
$model = "(^[a-z])((([a-z0-9])*(\.|-|_)?){0,})@(([_a-z0-9-]{2,})\.){1,}([a-z]{2,4}$)";
if (eregi($model, $mail)) {
echo "[$mail]  valide<br />";
return true;
}
else{
echo "[$mail]  invalide<br />";
return false;
}
}
复制代码
当时觉得能用就可以了,现在看来太低级,就想按照书里的提示修正一下。
书里是这样写的:^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$
我能看懂这个正则,校验的不是很好,但是比较简明,我就想吸收过来改进我的代码.
首先试验了一下,却发现有warning,结果也不对.
研究了一下,发现是因为在方括号里写了"\-"的关系,难道在方括号里"-"可以不用"\"?
如果去掉,代码可以用,但是EMAIL里就不能用"-".
于是把"-"前的"\"去掉,正则是这样
$model = "^[a-zA-Z0-9_-.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$";
还是有warning,结果也错误.但是改成这样
$model = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$";
结果就完全正确了.
发现差别了么?就是把-放到方括号的最后,然后又进行了几个试验,一下几种正则都正确.
[a-zA-Z0-9_.-]+
[a-zA-Z0-9._-]+
[._a-zA-Z0-9-]+
[a-zA-Z0-9.-_]+        这个正确,但是a<b@google.com也被校验为正确
这个 [._a-zA-Z0-9\-]+ 也正确,但是a\b@google.com也被校验为正确.
看来-放前放后还有讲究呢
到此,第一步完毕,得到的经验:
正则中方括号里-不用加\,但是要放到最后,在圆括号中.加\不加\效果一样,但是在方括号里不能加\
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
php mail发送email时subject为乱码
destoon 后台添加会员 邮箱可以重复 可以不填写的操作方法
PHP FILTER
wordpress评论回复自动发邮件的功能
Limit MacOS Mail
邮件正则表达式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服