Miles' Blog

天涯何處無幹話,何必要講實務話

Regular Expression

PHP支援兩種正規表示式,POSIX 和 Perl。POSIX 內建,Perl 語法須將 PCRE 程式庫編譯進來。正規表示式比字串慢,儘量用字串。

  • ():括住子表示式。
  • []:括住字元。
  • {}:括住重覆次數說明。
  • .除\以外的單一字元。如.at相符於cat,sat,mat。
  • [a-z]、[^a-z]:a到z、非a-z。
  • [aeiou]
  • [a-zA-Z]

字元類別:

  • [[:alpha:]]:字母。
  • [[:alnum:]]:字母及數字。
  • [[:lower:]]:小寫字母。
  • [[:upper:]]:大寫字母。
  • [[:digit:]]:數字字元。
  • [[:xdigit:]]:16進位數字字元。
  • [[:punct:]]:標點。
  • [[:blank:]]:跳格及空白。
  • [[:space:]]:空白。
  • [[:cntrl:]]:控制字元。
  • [[:print:]]:所有可視字元。
  • [[:graph:]]:除空白字元外所有可視字元。
  • []?:表示該樣式會出現0或1次。
  • []*:表示該樣式會出現0或0次以上。
  • []+:表示該樣式會出現1或1次以上。如[[:alpha:]]+表示至少會有一個英文字母。
  • (very )*large:相符於large、very large、very very large。
  • {3}:重複三次。
  • {2,4}:重複二到四次。
  • {2,}:重複兩次以上。
  • ^(在表示式外),表示式須出現在被蒐尋字串首才算相符。如^bob。
  • $,表示式須出現在被蒐尋字串尾才算相符。如com$。
  • ^[a-z]$,字串頭尾之間,出現a-z任一字元就算相符。

(選項一)|(選項二)|(選項三):多選一都符合

特殊字元,在正規表示式中須以\特殊字元取代。

中括號外

  • \:跳脫字元。
  • ^:比對字串頭。
  • $:比對字串尾。
  • .:換行之外的任意字元。
  • |:多重選擇起點(讀成OR)。
  • (:子樣式起點。
  • ):子樣式終點。
  • *:重複0次以上。
  • +:重複1次以上。
  • {:重複次數 最小/最大 量化值起點。
  • }:重複次數 最小/最大 量化值終點。

中括號外

  • \:跳脫字元。
  • ^:否定。
  • -:表示字元範圍。

Function

  • ereg(正規表示式,被蒐尋字串,陣列名);:在被蒐尋字串中找符合於正規表示式的子字串,找到就放進陣列,成為一個元素。傳回真假(1,0)。陣列名可省略。
  • eregi(正規表示式,被蒐尋字串,陣列名);:同ereg,但不分大小寫。
  • ereg_replace(正規表示式,取代字串,被蒐尋字串);:在被蒐尋字串中找到表示式,用取代字串換掉。
  • eregi_replace(正規表示式,取代字串,被蒐尋字串);:同ereg_replace,但不分大小寫。
  • split(正規表示式表述之分隔字串,被切割字串,傳回元素上限);:用分隔字串,將被切割字串,切成一段段,成為陣列中一個個元素。傳回陣列。

References

0%