Board logo

标题: [转帖]正则表达式的实例::一个非常实用的email地址检验程序 [打印本页]

作者: cnangel    时间: 2004-1-16 09:31     标题: [转帖]正则表达式的实例::一个非常实用的email地址检验程序

程序原作者: 佚名
#最严格的方法莫过于对email主机进行检验,但是这样做会影响速度。
#这个子程序可以消除由于输入造成明显的错误诸如把 .....ding@@.163.com..
#自动替换成 <A HREF=mailto:ding@163.com>ding@163.com</A> 在易用性上对用户有很大的帮助。
#希望大家指正。

sub validate_email
{
my($email)=$_[0];
##以下为替换代码
$email=~s/ //g; #消除空格
$email=~s///g; #消除NULL字符
$email=~s/\@{2,}/\@/g; #把两个以上连续的 @ 换成一个 @
$email=~s/\.{2,}/\./g; #把两个以上连续的 . 换成一个 .
$email=~s/^\.+//g; #消除开头的 .
$email=~s/\.+$//g; #消除结尾的 .
$email=~s/\@\.+/\@/g; #把 @. 转换成 @
$email=~s/\\\&\;\`\'\/\|\"\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r//g; #消除其他非法字符

#### 以下为匹配代码
if(($email!~/\./)||($email!~/\@/)) #如果email地址不含.或者不含@则返回错误
{ return(0); }
if($email=~/(^\@)|(\@$)/) #如果email地址以@开头或者结尾则返回错误
{ return(0); }
if($email=~/\@.*?\@/) #如果email地址中含有两个(以上)不连续的@则返回错误
{ return(0); }
if($email!~/\@.*?\..*?/) #如果email地址不符合@(someting).(something)则返回错误
{ return(0); }

$mailad=$email;
return(1);
}

--------------------------------------------------------------------------------


程序主要使用匹配 与替换的正则表达
替换形式 s/替换目录串/新串/g 即是用新串替换替换目标串 最后的 g 是一个控制符, 全程替换  :ht37:




欢迎光临 星星博客 (http://commerce.huhoo.net/) Powered by Discuz! 7.0.0