PHP7 正则

来源:互联网 发布:网络言论自由弊端 编辑:程序博客网 时间:2024/04/20 06:52
【正则】

    医生的处方
    道士的符
    程序员的正则

【运用场景】

    邮箱验证
    url地址验证
    模板引擎
    验证手机号
    省份证号
    银行卡号
    修改配置文件
    查找、替换、匹配

【正则的使用原则】
    能使用php给咱们的函数 解决 查找、替换的 就别用正则 它效率偏低


【基本用法】
    大家伙在学习正则的时候so easy
    你们使用的时候稍稍有些复杂

    正则的组成部分

    1、定界符
    2、原子
    3、元字符
    4、模式修正符

    【定界符】   
        就是确定正则表达式(规则表达式)的边界的符号 那些能作为定界符使用?

        除了 a-z A-z 0-9  \ 空格不能作为定界符使用

        /(我推荐大家使用这一个)  #  @ %  ......

        格式
            $pattern = '/你自己定义好的规则/';

    【重点】 原子

        它是正则表达式中最小的一个单位 它里面最少有一个原子(a-z A-Z 0-9 空格 _)

        稍微不正常的原子 特殊的原子
            \d  表示所有的数字 0-9
            \D 所有的非数字[^0-9]

            \w 就是代表 a-z A-Z 0-9 _
            \W 与\w相反  非a-z A-Z 0-9 _ [^a-zA-z0-9_]

            \s 代表所有的空格 \n 回车 \r换行  \t 制表符 tab键
            \S 代表所有的非空格  非回车 非换行 。。。。。

            \b 词边界 (了解) 不记就不记吧
            \B 非词边界(了解)
        []原子表 就是一系列的原子 [a-z][A-Z][0-9_]   

        ^ 抑扬符 (取反)

        .  除了\n 回车符以外的字符都能匹配到
        注意;如果你字符串里面有回车 字符 换行字符 tab字符 用双引号

    【元字符】
        就是修饰原子的,在原子原来基础之上在加修饰

        *修饰前面的原子只修饰前面的一个原子  (贪婪) 如果没有 返回一个空的字符串{0,}

        + 表示前面的原子出现一次或者多次 一个没有匹配失败(贪婪){1,}

        ?表示修饰前面的原子出现0次或者一次 (可有可无){0,1}

        {} 修饰前面原子出现的个数 {m , n} {m,}
       
        ^ 抑扬符 不放【】里面是以什么什么开头
        $ 以什么什么结尾  $pattern = '/^abc.*abc$/'; 

        \A 跟^一样 (了解即可)

        \Z  跟$一样(了解即可)

        | 或者

        () 可以改变优先级 将莫一块视为一个整体 子模式功能??

    【模式修正符】
        概念:
            就是对前面的规则表达式在进行修饰,在原有的功能之上再加修饰 写在定界符之后

            i - 不区分大小写
            m 视为多行multiline
                $str="bdfe\nabc";
                $pattern = "/^abc/m";

            s 视为单行  single
                $str="bdfeab \nc";
                 $pattern = "/ab.*c/s";

            U  可以取反 (取消贪婪 重要)
                $str = 'aaaaaa';
                $pattern = "/a+/U";

                如果你不加U 把所有的a都取出来 加上以后只给你一个a

            .+?
            .*?
                如果问号在+ 或者 * 号后面 代表取消贪婪


技巧
    就好比你们交女朋友一样写一点测一点

    https://www.baidu.com  cn  org edu love me  .net

    http://www.baidu.com

    likunphp@163.com
    123123123@qq.com

    gouwa@sina.com.cn

    面试题会考试
        譬如你写一个邮箱验证 手机号验证  url

【函数】

    preg_match()  //匹配结果  数组
    preg_replace() //查找并且替换
    preg_match_all() //匹配所有的 就是中间有其他字符 后面如果有满足需求的统统找出来 返回给一个数组

     preg_replace
     preg_replace_callback


【URL认证】
<?php


//$str = 'http://www.baidu.com';(com|net|org|me|love)
//https

//www.baidu.com

$pattern = '/(http|https)?:\/\/(\w+\.?)(\w+\.?)(\w+\.?)/';


if (preg_match($pattern , $str , $matches)) {
    var_dump($matches);
} else {
    echo '匹配失败';
}

















原创粉丝点击