• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>正则表达式应用案例

正则表达式应用案例

验证电子邮箱

在程序开发中,验证电子邮箱是常遇到的验证方式之一,合法的电子有限尤其相对的固定格式,一般来说包含以下三个部分

  • 用户名:约定邮箱用户名的规则是含有大小字母、数字和下划线
  • 服务器域名:包含小写字母、数字和点(.)
  • @符号:链接用户名和服务器名

如邮箱:admin@qq.com

根据规则,我们可以得出表达式

/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/

案例:通过函数来验证邮箱是否合法

<?php
    //使用checkEmail()函数输出邮箱格式检验结果
    function checkEmail($email){
        $email_pattern="/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";
        //preg_match()函数用来验证邮箱格式的正确性
        if(preg_match($email_pattern,$email)==1){
            $result=$email."是合法的邮箱格式.<br>";
        }elseif(preg_match($email_pattern,$email)==0){
            $result=$email."不是合法的邮箱格式.<br>";
        }
        echo $result;
    }
    //通过函数来验证四个邮箱的正确性
    checkEmail("admin123@qq.com");
    checkEmail("admin@abc.cn");
    checkEmail("admin@com.");
    checkEmail("123@com.123@com");
?>

运行结果陵小宇博客-使用正则表达式验证邮箱

验证手机号码

目前国内手机号码需要遵循的规则如下

  • 手机号码由11位组成
  • 手机号码必须以1开头,并且第二位只能是3、5、8、9
  • 手机号码后9位数由0-9之间的十进制数随机组成,没有其他限制

根据规则,表达式为

^[1][3589]\{9}$

案例

<?php
    //使用checkPhone()函数输出手机号码检验结果
    function checkPhone($mobile){
        $mobile_pattern="/^1[3589]\d{9}$/";
        //preg_match()函数用来验证手机号码的正确性
        if(preg_match($mobile_pattern,$mobile)==1){
            $result=$mobile."是合法的手机号码.<br>";
        }else if(preg_match($mobile_pattern,$mobile)==0){
            $result=$mobile."不是合法的手机号码.<br>";
        }
        echo $result;
    }
    //通过函数来验证四个手机号的正确性
    checkPhone("15285315697");
    checkPhone("12085697412");
    checkPhone("17088888888888");
    checkPhone("15011111111");
?>

运行结果

陵小宇博客-使用正则表达式验证手机号码

注意:随着用户的不断增多,手机号码段也在不断增加,案例中的规则不可能永久适应

验证QQ号

验证QQ号的规则

  • 以1-9中的数字开头
  • 以第二位开始,后面的数字又1-9任意组合
  • 长度至少5位数,且最长为15位

根据规则表达式为

^[1-9][0-9]{4,14}$

案例

<?php
    //使用checkQQ()函数输出QQ号码检验结果
    function checkQQ($qq){
        $qq_pattern="/^[1-9][0-9]{4,14}$/";
        //preg_match()函数用来验证QQ号码的正确性
        if(preg_match($qq_pattern,$qq)==1){
            $result=$qq."是合法的QQ号码.<br>";
        }else if(preg_match($qq_pattern,$qq)==0){
            $result=$qq."不是合法的QQ号码.<br>";
        }
        echo $result;
    }
    //通过函数来验证四个QQ号的正确性
    checkQQ("12345678910");
    checkQQ("ABCDFGHJJJJ");
    checkQQ("1230");
    checkQQ("19564785269784563");
?>

运行结果

陵小宇博客-使用正则表达式验证QQ号码

验证url网址

根据网站url地址总结出以下规则

  • 协议名:通常以http://、https://、ftp://开头
  • 域名部分:以.com、.cn、.net、.org等结尾
  • 网站文件路径:通常指.com等域名后的部分

根据规则写出表达式

^((http|https|ftp)?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$

案例

<?php
    //使用checkurl()函数输出url网址检验结果
    function checkurl($url){
        $url_pattern="/^((http|https|ftp)?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/";
        //preg_match()函数用来验证url网址的正确性
        if(preg_match($url_pattern,$url)==1){
            $result=$url."是合法的url网址.<br>";
        }else if(preg_match($url_pattern,$url)==0){
            $result=$url."不是合法的url网址.<br>";
        }
        echo $result;
    }
    //通过函数来验证四个url号的正确性
    checkurl("https://www.baidu.com");
    checkurl("http://baidu.com");
    checkurl("abc.acn");
    checkurl(".abc");
?>

运行结果

陵小宇博客-使用正则表达式验证url网址

验证身份证号码

一个合法的身份号码主要包含以下是个部分

  • 第一部分:户口所在地,一个为6位数
  • 第二部分:出生日期,4位年份数,2位月份数,2为日期数,一共8位数
  • 第三部分:数字顺序吗,一共3位数,也就是同一天书生的人数排序,最后1位,奇数代表男性,偶数代表女性
  • 第四部分:身份证校验码,可以是0-9的数字,或者是“X”(X代表数字10)

根据规则得出表达式

^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$

案例

<?php
    //使用checkid()函数输出身份证号码检验结果
    function checkid($id){
        $id_pattern="/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$/";
        //preg_match()函数用来验证身份证号码的正确性
        if(preg_match($id_pattern,$id)==1){
            $result=$id."是合法的身份证号码.<br>";
        }else if(preg_match($id_pattern,$id)==0){
            $result=$id."不是合法的身份证号码.<br>";
        }
        echo $result;
    }
    //通过函数来验证四个id号的正确性
    checkid("564525185205061231");
    checkid("96857419000101452X");
    checkid("856974589621324567");
    checkid("1234567891011151144");
?>

运行结果

陵小宇博客-使用正则表达式验证身份证号