应用场景:邮箱验证、URL地址验证、模板引擎的编写、手机、银行卡匹配、修改配置文件等
    如果PHP本身有解决查找替换的内置函数,尽量别用正则,效率低

    定界符
    /abc/
    #abc#
    -abc-
    哪些不能作为定界符?
    A-Z 、 a-z、 0-9 、空格、反斜线\ 推荐使用/ /

    1. <?php
    2. $str='abcde';
    3. $pattern='/ab/';
    4. var_dump(preg_match($pattern, $str, $match));//int 1
    5. var_dump($match);//ab
    6. ?>

    什么是原子

    1. <?php
    2. $str='abc0def';
    3. //$pattern='/ab/'; //切记要写定界符 原子是正则表达式最小的东西a-z,A-Z,0-9,空格,下划线
    4. $pattern='/\d/'; //0,\d表示0-9之间的数字,\D匹配除0-9之间的东西都可以匹配到
    5. var_dump(preg_match($pattern, $str, $match));//int 1 preg_match(写好的规则, 从哪找, 结果给谁) 只要匹配出来一个就不会继续往下找
    6. var_dump($match);//ab
    7. ?>
    1. \d : 匹配0-9之间的数字(digital
    2. \D : 匹配出来0-9之间所有字符
    3. \w : 匹配数字字母下划线(word
    4. \W : 匹配非数字字母下划线
    5. \s : 匹配空格、回车、tab、换行(space
    6. \S : \s相反

    原子表:可以取范围

    1. [a-z]

    抑扬符:^(取反)

    1. [^a-z] 表示非a-z的任意字符都可以匹配到

    “.”表示所有字符,除了\n(除了回车符以外的字符都能匹配到)
    “*”,修饰前面的一个原子,如果有或没有都会匹配到,前面那个原子没有也会匹配到,匹配值为空
    “+”,匹配一次或者是多次
    “?”,匹配0次或者1次
    “{0,2}”,出现0次或两次 {n,m}

    1. <?php
    2. $str='aaaaabc0def';
    3. $pattern='/a+/';
    4. var_dump(preg_match($pattern, $str, $match));//会匹配到aaaaa
    1. <?php
    2. $str='aaaaabc0def';
    3. $pattern='/a{0,2}/';//aa
    4. var_dump(preg_match($pattern, $str, $match));//会匹配到aaaaa

    “/^a/” 表示以a开始(^写在中括号里面就是取反,不写在中括号里面就是以…开始)
    “/^af$/”表示以a开始以f结束(af)
    “/^a.+f$/”(.表示除换行符以外所有字符,+表示1次或者多次,这样就可以全部匹配出来,如aaaaabc0def)

    修饰符:
    i:不区分大小写
    m:视为多行(multiple)

    1. $str="\bcd /n abc\m"; //单引号不解释转义字符,这里要用双引号 m:视为多行
    2. $pattern='/^abc/'; //表示以abc开头
    3. var_dump(preg_match($pattern, $str, $match));//匹配成功'abc'

    s:视为单行(哪怕有换行,都是视为1行)(single)
    U:取消贪婪($str=kajs hhhhhhhhhsjk, $pattern=’/\h+/U’,不加U会匹配hhhhhhhhh,加了会匹配到h )


    URL地址验证:

    1. <?php
    2. //URL验证
    3. $str='http://www.baidu.com';
    4. $pattern='/(http|https)?(:\/\/)?(\w+.?)(\w+.?)(\w+.?)/';//括号括起来表示优先级, .?表示.可有可无
    5. if(preg_match($pattern, $str, $match)){
    6. echo '匹配成功';
    7. var_dump($match);
    8. }else{
    9. echo 'fail';
    10. }
    11. ?>

    正则函数
    preg_match_all($pattern, $str, $matchs) //匹配所有
    preg_replace();//查找并替换

    1. $str='<div>你上我好大家好</div>';
    2. $pattern='/<div>(.*)</div>/';
    3. $replace='<h1>我是被替换以后的</h1>';
    4. $newStr=preg_replace($pattern,$replace,$str);
    5. var_dump($newStr);
    6. echo $newStr

    模板引擎原理与使用
    实现HTML代码和PHP代码分离