定义:有一定格式的字符串

作用:1.用来判断一个字符串是否符合一定的要求

          2.可以去一个字符串中,把某些符合规则的字符串拿出来

格式: 由 字符簇 限定符 定位符组成

字符簇:一组字符 由字符组成的集合

            [0-9]数字

            [^0-9]非数字

            [a-z]小写英文

            [A-Z]大写英文

            [a-Z]大小写英文

            [a-zA-Z]

            [a-zA-Z0-9]大小写英文数字

            \d数字

            \w数字英文字母及下划线

            \D 非数字

    \W 非数字英文字母及下划线

            . 代表所有(任意)字符,除了换行

            说明:在字符簇中出现特殊字符使用\ \-转义

限定符:限定字符簇中字符出现的次数

            {m,n}出现m次到n次 n必须大于m

            {3}3位 3次

            {m,}m次以上

            {0,n}n次以下

            ? 0或者一次{0,1}

            + 一次以上{1,}

            * 0次以上{0,}

定位符:  ^字符串的开始 

               $字符串的结束 

               \B单词的开始 

               \D非单词的开始与结束   

               | 或运算的优先级低 先左再右

               ()子表达式  可以加限定符 子表达式的优先级最高匹配字符串中的位置  

匹配模式:i 不区分大小写     

                 s  .中包含换行        

写正则表达式:

               "/正则表达式/"

               "#正则表达式#"

               "!正则表达式!"

               $str="fdafd565645fd56fd456afd465a";

               "/[0-9]{1,}/"

匹配过程:从字符串左边依次跟字符簇比对,如果符合计数器加1,当计数器已经到最大值。或者遇到和字符簇不匹配的字符,停止。然后判断计数器中的值是否和限定符要求一致,一致则匹配下来,否则继续。

运行表达式:

   0|1 preg_match_all(正则表达式,字符串,数组(把匹配到的内容返回数组))

              匹配所有

   0|1 preg_match(正则表达式,字符串,数组(把匹配到的内容返回数组)) 

              效率高 匹配到一次就停止

         preg_split(正则表达式,字符串,数组(把匹配到的内容返回数组))

              用正则表达式拆分一个字符串

         preg_replace(正则表达式,替换成什么,被替换的字符串)

              用正则表达式去把一个字符串中的某些子字符串替换掉

              反向引用:暂时没讲 比较复杂 用处也比较多用正则表达式替换一个字符串

说明:限定符跟字符簇可以 多次、重复出现 必须成对出现 

  

和的使用:

匹配6位3-9的数字。

/[3-9]{6}/

匹配邮政编码

/[0-9]{6}/ /\d{6}/

匹配一个a

/a/

匹配手机号

1开头 

第二位:345678

第三位及以后:0-9

    "/[1]{1}[3-8]{1}[0-9]{9}/" 手机好正则匹配表达式

    preg_match_all("/[1]{1}[345678]{1}[0-9]{9}/","183888888888",$arr);

子表达式:把表达式 中的一部分用括号括起来,括起来的部分较子表达式,子表达式后面加限定符

说明 :子表达式后可以跟使用限制符


或的使用:

    匹配一个路径字符串中(是否包含.gif .jpg .png)

    "/x|y|z/" 每个或之间当成一个整体  

    ^ :开始位置

    "/^xyz/" 以xyz开始的正则表达式    

    $ :结束位置      

    "/xyz$/" 以xyz结束的正则表达式       

    "/^xyz$/" 以xyz开始并且以xyz结束的正则表达式 只能是xyz 

    邮箱的正则表达式      

    "/[a-zA-Z0-9_\-]{2,}@[0-9a-zA-Z\-]+(\.[a-zA-Z]+)+$/"      

    "/[a-z0-9_\-]{2,}@[0-9a-z\-]+(\.[a-z]{2,})+$/i"   不区分大小写  

    "/[\w]+@\w+(\.\w)+$/"         

    整数表达式

    "/^(([\+\-]{1}[1-9]{1})|([1-9]{1}))\d*$/"

    正整数表达式

    "/^(\+[1-9]\d*)|([1-9]\d*)$/"    

    "/^(\+?[1-9]\d*)$/"

    负整数的表达式        

    "/^(\-?[1-9]\d*)$/" 

    浮点数表达式 

    /^[\+\-]?(0|[1-9]\d*)\.\d+$/

    "/^[\+|\-]?(0|[1-9]\d*)\.\d+$/" 

    正浮点数表达式      

    "/^(\+0\.\d+)|(+[1-9]\.\d*)|(0\.\d+)|([1-9]\d*\.\d+)$/"

    "/^(\+?0\.\d+)|(+?[1-9]\d*\.\d+)$/" 

    负浮点数表达式

    "/^\-?(0|[1-9]\d*)\.\d+$/"

    获取所有P标签中的所有内容

    "/(<p.*?>)(.*?)<\/p>/s"  


    去除.*的贪婪性:

    .*?

    通过数字拆分字符串

    $str="fdadfsa12fdafda12fdas1";

    preg_split("/\d+/",$str,$arr);