學習小筆記---正則表達式

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

作用: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);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章