最近在看基礎相關的東西,發現之前可以寫出來的正則表達式,如今寫不出來了,好比千分位格式化輸出金額,用正則表達式寫不出來,也只能用php提供number_format函數來解決問題。索性把這塊的知識複習一下,從頭開始瞭解,我又怕忘得太快,因而乎記在這裏php
其實學習正則表達式記住幾個知識點,而後就是刷題,好比匹配手機號、身份證號、郵箱等等,經過這些案例來學習正則表達式是最好的方法,記得太多的知識點反而寫不出來。廢話很少說,先了解下知識點html
下面列出來了一些經常使用的元字符,具體的元字符的用法這裏不在列出,瞭解就能夠了,能夠結合別人寫的正則表達式回頭來學習,這樣記住的要更深入一些正則表達式
限定符要結合元字符一塊兒使用,纔能有出奇制勝的功效,具體在文章後買列舉出經常使用的案例,看下它們是如何使用的sql
多選機構在一些特定的場合下使用的比較多,好比匹配域名後綴(com|cn|hk|sg)函數
若是要重複一個字符呢,用小括號能夠製造這麼一個字符串。若是要想使用前面匹配到的結果可使用分組學習
在使用重複的量詞(+,*,{m,n})會盡量多的匹配字符,若是咱們不想要貪婪模式,子但願在匹配成功的前提下使用更少的重複字符,可使用非貪婪模式3d
在匹配一些東西的時候,懶惰模式很是的有用,好比匹配標籤img中的src屬性值,就使用到了懶惰模式,規則就是這樣/<img[\s\S]*?src="([\s\S]+?)"[\s\S]*?>/
code
元字符在匹配的時候,是有優先級的,同級優先級從左至右,其餘狀況以下面所示,優先級遞減regexp
這是正則表達式比較難理解的地方,這裏我想記錄着,用另一篇文章來說解一下,我要惡補一下知識,才能弄明白orm
在正則表達式中若是要匹配$是比較特殊的,它們兩個都是元字符,在使用時必須轉義因此匹配$使用的規則爲\\\$
在PHP中正則表達式必須放在單雙號引號中,不能像JS那樣單獨出現,而\
在單引號中是轉義字符,因此必須把規則中的\
再次轉義,獲得\\\\\\$
,也就是所匹配$須要使用6個\
和一個$
在雙引號中$
有特殊的含義,須要對其轉義後才能使用,獲得\\\\\\\$
總結一下,正則表達式和引號中的特殊字符都得轉義,爲了不特殊字符須要轉義,強烈建議使用單引號
/^-?\d+$/
/^[1-9]\d*$/
/^\d+\.\d{2}$/
/^1\d{10}$/
/^(?:\d{15}|\d{17}[\dxX])$/
/^[\w\-]+@(?:\w+\.)+\w+$/
/^((25[0-5]|2[0-4]\d|[1-9]\d{0,2})\.){3}(25[0-5]|2[0-4]\d|[1-9]\d{0,2})$/
/^(?:https?:\/\/)?(?:[\w-]+\.)+[a-zA-Z]+$/
/<img[^>]+?src="([^"]+)"/
/<img[^>]+?src="([^"]+)"/
/[\u4e00-\u9fa5]+/u
正則表達式的學習要結合案例,單純的學習正則規則是沒有用的,經過幾個案例來學習,怎麼使用,遇到的問題,這樣的學習要高效不少,並且很是的實用
下面的文章我將學習正則表達式中的環視
,一塊兒期待