首先搞清楚3個問題:php
爲何要用正則表達式?正則表達式
什麼是正則表達式?算法
如何使用正則表達式?編程
正則表達式最初起源數學領域的一些研究,1956年數學家Stephen Kleene在論文《神經網絡事件的表示法》中首次提出了正則表達式的概念。數年以後,計算機領域借鑑那些研究工做的成果和思路,由UNIX的主要創始人Ken Thompson開始講正則表達式應用於計算搜素算法,至此正則表達式從UNIX領域開始被普遍地普及開來。網絡
替換文本或者代碼中的某些字符,最多見的方法就是使用編輯軟件中的查找和替換功能,可是替換工做很大的時候,這樣的作法就不足以高效的完成要求。這時候就須要藉助編程來實現,這時候就使用正則表達式來完成幾乎全部的文本查找和替換工做。app
正則表達式的強大功能來源於它能夠指定抽象模式校驗不一樣的字符序列,3種基本抽象模式:spa
可出現的字符集(例如,字母、數字和下劃線).net
可選擇性的集合(例如,」com「、」net「或」org「)事件
可重複的序列(例如,至少一個可是很少於8個的字母符號)字符串
將這三種模式按照必定的方式組合就能夠校驗電子郵件的地址是否合法;校驗用戶輸入的日期格式是否正確;校驗用戶輸入的身份證號碼格式是否正確等(固然能夠用php自定義算法實現)。
正則表達式是由一些普通的字符和一些元字符(metacharacters)共同組成的,其中普通字符包括大小寫的字母和數字,而元字符具備特殊含義。
元字符是用來描述前面的字符在匹配模式中出現的方式。元字符自己是單一的字符,可是不一樣或者相同的元字符組合起來能夠構成大的元字符。下表中消息介紹了正則表達式中各元字符的含義:
方括號表達式能夠用來定義一個字符集和,其含義是必須匹配該集合中的任意一個字符。定義方括號表達式的方式有兩種:
注意:一般狀況下,「-」字符只表示一個字符,只有在表示字符區間的時候才被用做元字符。
前面提到的方括號表達式只能用來匹配一個字符,若須要匹配一個字符串,好比「Y8」等,這裏須要使用定位符「^」與「$」。
正則表達式「^[^A-Z][0-9]$」可用來校驗由兩個字符組成的字符串,該字符串要同時知足以大寫字母開始、以數字結尾的條件。
量詞又被稱爲限定符,量詞用來指定字符必需要出現的次數,也就是在制定一個重複模式時要使用量詞。
量詞具體包括*、+、?、{n}、{n,}、{n,m}共6種,具體使用方法以下表:
正則表達式「happy{1,2}」能夠用來校驗字符串「happy」和字符串「happyhappy」。
量詞「?」若是出如今方括號表達式的裏面的時候,只表明一個普通字符。例如:方括號表達式「[-0-9?]」能夠用來校驗任何一個數字或者一個普通字符「?」,或者一個普通字符「-」。
在正則表達式中,「|」能夠表示選擇分支。例如,正則表達式「aaa|bbb|ccc」能夠用來校驗字符串「aaa」、字符串「bbb」、或者字符串「ccc」。
使用選擇符與其餘元字符結合能夠完成複雜的正則表達式,例如,正則表達式「^[0-9]|^[a-z]」能夠用來校驗以數字字符開頭或者以小寫字符開頭的字符串。