返回列表 回复 发帖

[转帖]正则表达式的实例::一个非常实用的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:

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表