寫在最前面的話
已經有近2個星期沒有更新博客了,前期一直在培訓、考核以及熟悉項目組項目,想起前兩天在園子里學習到了一個新詞語——“不明覺厲”,說句實話,我目前就處於這個狀態,只要是別人知道的某個非常牛東西就算我一點也不明白也會非常厲害,感覺這個狀態可能要持續好久厄!終於到了周末,好好休息下,順便寫點東西、、、、
今天寫點關於正則表達式的知識
正則表達式小知識
對於正則表達式,我們必須理解一點:正則表達式是對字符串操作的邏輯公式,我們可以使用它構建一個規則,然后驗證某字符串是否滿足該規則(也就是我們常會說匹配),因此我們可以將它當作一個工具來使用。同時正則表達式操作的對象主要是文本,所以但凡與文本相關的邏輯操作,我們都可以嘗試用正則試試。其實正則這個東東也很令人頭疼,寫錯一點點結果就會不對,而且表達式不易記住,有點坑。不過我們不能因為它的缺點而放棄它的學習對吧,它在很多地方都有廣泛使用,下面我們就進入學習下吧!
正則表達式怎么寫?
由於正則表達式這個東東是屬於那種實用型的知識,用實例講解更易理解,畢竟看到效果嘛!!!
示例一:
var regx = new RegExp("C"); console.log(regx.test("ABCD"));
上述例子我們定義了一個最簡單的正則表達式regx,它的目的就是匹配任意字符串中是否含有“C”字符,輸出結果為true,如果我們將C改為E,則結果為false
示例二:
var regx = new RegExp("ello","gi"); var test = "hello,my name is ello !".match(regx); console.log(test);
上述例子結果為["ello", "ello"],我們可以看到匹配了兩個ello,一個是hello中的ello,另一個是單獨的ello,假若我沒有加上第一句中的第二個參數gi,那么的得到的結果就是["ello"],因為如果我不加gi,正則表達式默認是匹配到第一個滿足條件的結果就終止,使用gi參數就是設置正則為全局匹配。
示例三:
在寫示例三之前我必須首先告訴大家幾個常用的元字符:
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數字或下划線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數字 |
\b | 匹配單詞的開始或結束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
看到這里我們,我們試着寫一個匹配QQ的正則,我們知道比較常見的QQ位數是8到12位,於是我們可以這么來寫 ^\d{8,12}$,在這里我們用到了上面表格中的元字符,正則表達式前面的^和末尾的$分別是正則的開始和結束,緊接着\d開始匹配數字(也就是0到9咯),在后面有一對花括號,它的意思就是數字可以重復8次到12次之間,如果我們花括號中只寫8,那么表明它只可重復8次,如果我們寫成^\d{8,}$則它可以重復8次或8次以上。
接下來寫一個匹配區號只有3位,號碼位數為7位的的電話號碼的正則:
^\(?0\d{2}[) -]?\d{7}$ //注意,紅色塊顯示的是三個字符 )、空格、-
我們來理解一下下:首先我們是我們的正則開始,接着是一個轉義字符,允許重復一次或零次,然后匹配0,接着重復數字兩次,緊接着出現一對[ ],出現里頭三個字符其中的一個或不出現,最后匹配7個數字,例如這個正則表達式可以匹配027-8576812;(027)9676143;02789780098等等
示例四:
好吧現在給一個我們經常用的郵箱驗證正則:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$
將這個正則分解開好看多了,當然啦,這個正則表達式是最通用的那種啦,我們常見的其中還會有限定條件。
示例五:
^(\d{1,3}\.){3}\d{1,3}$ //IP地址
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$ //18位身份證號碼
最后需要注意點是我們如果需要匹配的字符中有元字符,我們需要使用轉義字符"\"
弱弱的結尾了、、、
今天就到這里吧,接下來的下篇我會詳細的寫點關於正則的示例,進一步理解正則表達式,包括分支分組以及復雜的正則理解和寫出自己實際需要的正則表達式。
說句實話,正則表達式就是個怪異的語言,需要多加理解和運用,當然咯好多我也木有記住,忘記了總是得去查!
------如果你覺得此文對你有所幫助,別忘了點擊下右下角的推薦咯,謝謝!------