在開發(fā)中,正則表達式常用于郵箱、手機號的校驗,文本的批量查找、替換等操作。
大部分同學,在拿到需求的時候,第一件事一定是打開瀏覽器,搜索:郵箱 正則表達式 怎么寫,然后Ctrl C + V,測試幾個條件沒問題,就提交了,出了問題也不知道怎么修改,只能再求救熱心網(wǎng)友。
本篇文章,主要帶大家了解一下,正則表達式的基本用法,有個初步的了解,看到正則后不再一臉懵。
比如IPv4地址的正則表達式:
如果你沒看過本篇文章,第一眼看到這個表達式一定有點頭暈,亂七八糟寫的是啥,別擔心,學完后你就會發(fā)現(xiàn),那些看似復(fù)雜的表達式,其實也不過如此。
本篇文章主要內(nèi)容的思維導(dǎo)圖,后續(xù)可用于快速查詢:
在正則表達式中,普通字符表示的還是原來的意思,比如表達式 1 可以匹配到數(shù)字 1,表達式 a 可以匹配到字母 a。
但是如果想要匹配到更多字符的時候,我們不可能把所有的字符都列一遍,這樣就太浪費時間了,那有什么更好的辦法呢,接下來就是元字符大顯身手的時間了。
.
點號通配符,可以匹配到除換行外的任意字符:
\d
數(shù)字通配符,可以匹配到數(shù)字0-9
\D
如果將D大寫,則匹配到的是任意非數(shù)字,相當于 \d 的反義
\w
字母數(shù)字下劃線通配符,可以匹配到任意的字母數(shù)字下劃線
\W
如果將W大寫,則匹配到的是任意非字母數(shù)字下劃線
\s
空白符通配符,可以配到任意空白符,包括回車、換行、換頁、制表符等
\S
如果將S大寫,則匹配到的是任意非空白符
到這里,特殊單字符就講完了,匯總下:
空白符分為下圖中的幾類,一般我們用 \s
表示就可以了:
|
或,和你心中想的那個或是一樣的,ab|bc 可以匹配到ab或者bc
[...]
多選一,比如 [abc] 可以匹配到字母a,也可以匹配到字母b或c
[a-z]
匹配a到z之間的任意元素,\w 這個通配符就可以用 【a-zA-Z0-9_】 來表示
[^...]
取反,不能是括號內(nèi)的任意單個元素
注意:以上的表達式每次只能匹配到單個元素
*
星號,代表出現(xiàn)0到多次,可以出現(xiàn),也可以不出現(xiàn),出現(xiàn)的話,不限制次數(shù)
+
加號,代表出現(xiàn)1到多次,也就是至少出現(xiàn)一次的意思
?
問號,代表出現(xiàn)0到1次,比如Http協(xié)議的正則就可以用 Https? 表示
{m}
代表出現(xiàn)m次,比如 a{1} 就表示匹配的規(guī)則中,字母a只能出現(xiàn)1次
{m,}
代表至少出現(xiàn)m次,{0,} 相當于星號,{1,} 相當于加號
{m,n}
代表出現(xiàn)m到n次,{0,1} 相當于問號
現(xiàn)在我們再回過頭來,看下文章開頭的正則表達式:
是不是覺得有點思路了,下面我們一起來實現(xiàn)下,先講講規(guī)則:
^
和 $
用于標識行的開始和結(jié)束,這個我們下一篇文章會講到開始吧:
通過上面的學習,我們知道一個數(shù)字可以用 \d
或 [0-9]
來表示,如果要表達多位數(shù)呢,比如0-99。
可以這樣拆分,0-99的范圍,最少的位數(shù)是1位,最多的位數(shù)是2位,那我們可以用2個數(shù)字通配符來表示,為了清晰和美觀,我們此處用 **[0-9]
**表示。
寫起來就是:
其中,0
代表數(shù)字0,因為要排除 00 的情況,所以不能使用 [0-9][0-9]?
來表示,中間有個或 |
,后面的 [1-9][0-9]?
表示1-99,還記得 ?
的含義嗎,代表出現(xiàn)0到1次。
兩位的寫完了,三位的就很簡單了,我們來寫下0-255的范圍。
這里要注意下:
來寫一下:
0-255到范圍寫完了,去掉0就成了1-255的范圍:
最后組合下,還記得 {3}
的含義嗎,代表這個字符或組合出現(xiàn)3次:
注意:.
點號別忘了用 \
轉(zhuǎn)義下
大功告成,有沒有豁然開朗的感覺,驗證下:
到這里,正則表達式的基本用法就講完了,如果有問題可以給我留言評論,謝謝。
正則表達式在線校驗工具:https://regex101.com/
到此這篇關(guān)于正則表達式那些讓人頭暈的元字符的文章就介紹到這了,更多相關(guān)正則表達式 元字符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標簽:南昌 欽州 中衛(wèi) 駐馬店 臨夏 黑河 延邊 阜陽
巨人網(wǎng)絡(luò)通訊聲明:本文標題《正則表達式那些讓人頭暈的元字符》,本文關(guān)鍵詞 正則,表達式,那些,讓人,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。下一篇:正則表達式量詞與貪婪的使用詳解