PHP从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

6.4 应用正则表达式对用户注册信息进行验证

【例6.6】通过正则表达式对用户注册信息的合理性进行判断,对用户输入的邮编、电话号码、邮箱地址和网址的格式进行判断。本例中应用正则表达式和JavaScript脚本,判断用户输入信息的格式是否正确。实例代码如下:(实例位置:资源包\TM\sl\6\6

(1)在index.php页面中通过Script脚本调用js脚本文件check.js,创建form表单,实现会员注册信息的提交,并应用onSubmit事件调用chkreg()方法对表单元素中的数据进行验证,将数据提交到index_ok.php文件中。index.php的关键代码如下:

    <script src="js/check.js"></script>
    <form name="reg_check" method="post" action="index_ok.php" onSubmit="return chkreg(reg_check,'all')">
    <table width="550" height="270" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
             <td height="30"><div align="right">邮政编码:</div></td>
             <td height="30" colspan="2" align="left">&nbsp;
                  <input type="text" name="postalcode" size="20" onBlur="chkreg(reg_check,2)">
                  <div id="check_postalcode" style="color:#F1B000"></div>
             </td>
        </tr>
        <tr>
             <td height="30"><div align="right">E-mail:</div></td>
             <td height="30" colspan="2" align="left">&nbsp;
             <input type="text" name="email" size="20" onBlur="chkreg(reg_check,4)">
                  <font color="#999999">请务必正确填写您的邮箱</font>
                  <div id="check_email" style="color:#F1B000"></div>
             </td>
        </tr>
        <tr>
             <td height="30" align="right">固定电话:</td>
             <td height="30" colspan="2" align="left">&nbsp;
                  <input type="text" name="gtel" size="20"  onBlur="chkreg(reg_check,6)">
                  <font color="#999999"><div id="check_gtel" style="color:#F1B000"></div></font></td>
        </tr>
        <tr>
             <td height="30"><div align="right">移动电话:</div></td>
             <td height="30" colspan="2" align="left">&nbsp;
                  <input type="text" name="mtel" size="20"  onBlur="chkreg(reg_check,5)">
                  <div id="check_mtel" style="color:#F1B000"></div></td>
        </tr>
        <tr>
             <td width="100" height="30"><input type="image"  src="images/bg_09.jpg"></td>
             <td width="340"><img src="images/bg_11.jpg" width="56" height="30" onClick="reg_check.reset()"
    style="cursor:hand"/></td>
        </tr>
    </table>
    </form>

(2)在check.js脚本文件中,创建自定义方法,应用正则表达式对会员注册的电话号码和邮箱进行验证。其关键代码如下:

    function checkregtel(regtel){
        var str=regtel;
        var Expression=/^13(\d{9})$|^18(\d{9})$|^15(\d{9})$/;                    //验证手机号码
        var objExp=new RegExp(Expression);
        if(objExp.test(str)==true){
             return true;
        }else{
             return false;
        }
    }
    function checkregtels(regtels){
        var str=regtels;
        var Expression=/^(\d{3}-)(\d{8})$|^(\d{4}-)(\d{7})$|^(\d{4}-)(\d{8})$/; //验证座机号码
        var objExp=new RegExp(Expression);
        if(objExp.test(str)==true){
             return true;
        }else{
             return false;
        }
    }
    function checkregemail(emails){
        var str=emails;
        var Expression=/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;           //验证邮箱地址
        var objExp=new RegExp(Expression);
        if(objExp.test(str)==true){
             return true;
        }else{
             return false;
        }
    }

(3)运行结果如图6.3所示。

图6.3 应用正则表达式对用户注册信息进行验证

注意

在本例中,通过正则表达式对表单提交的数据进行验证,在JavaScript脚本中,应用onBlur事件调用对应的方法对表单提交的数据直接进行验证,并通过div标签返回结果。