正则的使用

记录一下正则在自己项目中的使用,以前没有系统的总结过,这里总结一下,方便自己的查看

网站的登录程序

在网站程序中的使用,一般包括了前段js的验证和后端php程序的验证,虽然一般的验证各个框架可以帮我们进行验证,但是有些特殊的情况下我们还是需要自己验证的,所以我们必须掌握如果使用正则进行验证程序。

  1. 前段检测
    这里是前段的一段js代码,可以先看一下所需要的dom信息以及页面的结构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    </head>
    <body>
    <h1>注册页面</h1>
    <form action="doAction.php" method="post">
    <table border='1' cellpadding='0' cellspacing='0' bgcolor='#ABCDEF' width='80%'>
    <tr>
    <td>用户名</td>
    <td><input type="text" name="username" id="" placeholder='请输入合法用户名' />用户名由数字、字母、下划线组成</td>
    </tr>
    <tr>
    <td>密码</td>
    <td><input type="password" name="password" id="" placeholder='请输入密码' />由数字、字母组成</td>
    </tr>
    <tr>
    <td>邮箱</td>
    <td><input type="email" name="email" id="" placeholder='请输入合法邮箱' />合法邮箱</td>
    </tr>
    <tr>
    <td>年龄</td>
    <td>
    <input type="number" name="age" id="" placeholder='请输入合法年龄' />年龄必须为正整数
    </td>
    </tr>
    <tr>
    <td>个人博客</td>
    <td><input type="url" name="url" id="" placeholder='请输入合法URL地址' />类似http://phpfamily.org</td>
    </tr>
    <tr>
    <td colspan='2'><input type="submit" value="注册" /></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
  2. 后端代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    header('content-type:text/html;charset=utf-8');
    $username=$_POST['username'];
    $password=$_POST['password'];
    $email=$_POST['email'];
    $age=$_POST['age'];
    $url=$_POST['url'];
    //验证用户名,首字母只能是字母
    if(!preg_match('#^[a-zA-Z]\w+$#',$username)){
    die('用户名不符合规范');
    }
    //校验密码,密码长度为8~16
    if(!preg_match('#^\w{8,16}$#',$password)){
    die('密码不符合规范');
    }
    //验证邮箱
    if(!preg_match('#^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,5}$#i',$email)){
    die('邮箱不符合规范');
    }
    //验证年龄
    if(!preg_match('#^[1-9]\d*$#',$age)){
    die('年龄不符合规范');
    }
    //验证URL
    if(!preg_match('#^[a-zA-z]+://(\w+(-\w+)*)(\.(?:\w+(-\w+)*))*(\?\S*)?$#i',$url)){
    die('URL不符合规范');
    }
    echo '注册成功';
  3. 使用Filter进行验证
    如果只是一些常规的检测的话,感觉使用Filter函数更加方便些,内置的效率更加好一些。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    header('content-type:text/html;charset=utf-8');
    //校验邮箱
    $email=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);
    var_dump($email);
    echo '<hr/>';
    //校验年龄
    $options=array(
    'options'=>array(
    'min_range'=>1,
    'max_range'=>150,
    'default'=>18
    )
    );
    $age=filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT,$options);
    var_dump($age);
    echo '<hr/>';
    $salary=filter_input(INPUT_POST,'salary',FILTER_VALIDATE_FLOAT);
    var_dump($salary);
    echo '<hr/>';
    $url=filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL);
    //http://phpfamily.org?type=1
    $url=filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL,FILTER_FLAG_QUERY_REQUIRED);
    //http://phpfamily.org/a/b/c
    $url=filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED);
    var_dump($url);
    echo '<hr/>';
    //1 true on yes 都会返回true
    //0 flase off no ''都返回false
    $testBool=filter_input(INPUT_POST,'testBool',FILTER_VALIDATE_BOOLEAN);
    var_dump($testBool);
    echo '<hr/>';
    //测试IP地址
    $ip=filter_input(INPUT_POST,'ip',FILTER_VALIDATE_IP);
    var_dump($ip);
    echo '<hr/>';
    //测试正则表达式
    $reg=filter_input(INPUT_POST,'reg',FILTER_VALIDATE_REGEXP,array(
    'options'=>array(
    'regexp'=>'#^\d#'
    )
    ));
    var_dump($reg);
    echo '<hr/>';
    var_dump(filter_has_var(INPUT_POST,'email'));
    var_dump(filter_has_var(INPUT_POST,'username'));
    var_dump(filter_has_var(INPUT_GET,'test'));
文章目录
  1. 1. 网站的登录程序
|