主頁 > 知識庫 > 正則表達(dá)式那些讓人頭暈的元字符

正則表達(dá)式那些讓人頭暈的元字符

熱門標(biāo)簽:深圳400電話辦理那家好 個(gè)性化地圖標(biāo)注在線 襄陽房產(chǎn)電銷機(jī)器人招商 清遠(yuǎn)陽山400電話號碼如何申請 安徽移動(dòng)外呼系統(tǒng) 怎么在高德地圖標(biāo)注行走軌跡 百度地圖標(biāo)注名編輯 施工地圖標(biāo)注怎么做 百度地圖標(biāo)注飯店位置怎么

0.寫在前面

在開發(fā)中,正則表達(dá)式常用于郵箱、手機(jī)號的校驗(yàn),文本的批量查找、替換等操作。

大部分同學(xué),在拿到需求的時(shí)候,第一件事一定是打開瀏覽器,搜索:郵箱 正則表達(dá)式 怎么寫,然后Ctrl C + V,測試幾個(gè)條件沒問題,就提交了,出了問題也不知道怎么修改,只能再求救熱心網(wǎng)友。

本篇文章,主要帶大家了解一下,正則表達(dá)式的基本用法,有個(gè)初步的了解,看到正則后不再一臉懵。

比如IPv4地址的正則表達(dá)式:

復(fù)制代碼 代碼如下:

^([1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.(0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

如果你沒看過本篇文章,第一眼看到這個(gè)表達(dá)式一定有點(diǎn)頭暈,亂七八糟寫的是啥,別擔(dān)心,學(xué)完后你就會發(fā)現(xiàn),那些看似復(fù)雜的表達(dá)式,其實(shí)也不過如此。

本篇文章主要內(nèi)容的思維導(dǎo)圖,后續(xù)可用于快速查詢:

1.特殊單字符

在正則表達(dá)式中,普通字符表示的還是原來的意思,比如表達(dá)式 1 可以匹配到數(shù)字 1,表達(dá)式 a 可以匹配到字母 a。

但是如果想要匹配到更多字符的時(shí)候,我們不可能把所有的字符都列一遍,這樣就太浪費(fèi)時(shí)間了,那有什么更好的辦法呢,接下來就是元字符大顯身手的時(shí)間了。

. 點(diǎn)號通配符,可以匹配到除換行外的任意字符:

\d 數(shù)字通配符,可以匹配到數(shù)字0-9

\D 如果將D大寫,則匹配到的是任意非數(shù)字,相當(dāng)于 \d 的反義

\w 字母數(shù)字下劃線通配符,可以匹配到任意的字母數(shù)字下劃線

\W 如果將W大寫,則匹配到的是任意非字母數(shù)字下劃線

\s 空白符通配符,可以配到任意空白符,包括回車、換行、換頁、制表符等

\S 如果將S大寫,則匹配到的是任意非空白符

到這里,特殊單字符就講完了,匯總下:

2.空白符

空白符分為下圖中的幾類,一般我們用 \s 表示就可以了:

3.范圍

| 或,和你心中想的那個(gè)或是一樣的,ab|bc 可以匹配到ab或者bc

[...] 多選一,比如 [abc] 可以匹配到字母a,也可以匹配到字母b或c

[a-z] 匹配a到z之間的任意元素,\w 這個(gè)通配符就可以用 【a-zA-Z0-9_】 來表示

[^...] 取反,不能是括號內(nèi)的任意單個(gè)元素

注意:以上的表達(dá)式每次只能匹配到單個(gè)元素

4.量詞

* 星號,代表出現(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,} 相當(dāng)于星號,{1,} 相當(dāng)于加號

{m,n} 代表出現(xiàn)m到n次,{0,1} 相當(dāng)于問號

5.實(shí)戰(zhàn)

現(xiàn)在我們再回過頭來,看下文章開頭的正則表達(dá)式:

復(fù)制代碼 代碼如下:

^([1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.(0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

是不是覺得有點(diǎn)思路了,下面我們一起來實(shí)現(xiàn)下,先講講規(guī)則:

  • IPv4地址的范圍,我們定義為 1.0.0.0 - 255.255.255.255,當(dāng)然專業(yè)上肯定有更嚴(yán)格的定義劃分,我們此處不糾結(jié)
  • 通過以上范圍,我們可以得出基本規(guī)則 [1-255].[0-255].[0-255].[0-255]
  • 可以看出后三位是重復(fù)的 .[0-255],所以我們只需要先寫出 [0-255] 的規(guī)則,后面就很簡單了
  • ^$ 用于標(biāo)識行的開始和結(jié)束,這個(gè)我們下一篇文章會講到

開始吧:

1.如何表達(dá)一個(gè)兩位數(shù)字的范圍

通過上面的學(xué)習(xí),我們知道一個(gè)數(shù)字可以用 \d[0-9] 來表示,如果要表達(dá)多位數(shù)呢,比如0-99。

可以這樣拆分,0-99的范圍,最少的位數(shù)是1位,最多的位數(shù)是2位,那我們可以用2個(gè)數(shù)字通配符來表示,為了清晰和美觀,我們此處用 **[0-9]**表示。

寫起來就是:

復(fù)制代碼 代碼如下:

0|[1-9][0-9]?

其中,0 代表數(shù)字0,因?yàn)橐懦?00 的情況,所以不能使用 [0-9][0-9]? 來表示,中間有個(gè)或 |,后面的 [1-9][0-9]? 表示1-99,還記得 ? 的含義嗎,代表出現(xiàn)0到1次。

2.如何表達(dá)一個(gè)三位數(shù)字的范圍

兩位的寫完了,三位的就很簡單了,我們來寫下0-255的范圍。

這里要注意下:

  • 當(dāng)數(shù)字達(dá)到3位的時(shí)候,百位只能是1或2
  • 當(dāng)百位數(shù)字是2的時(shí)候,十位數(shù)字只能是0-5
  • 當(dāng)十位數(shù)字是5的時(shí)候,個(gè)位數(shù)字只能是0-5

來寫一下:

復(fù)制代碼 代碼如下:

0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

0-255到范圍寫完了,去掉0就成了1-255的范圍:

復(fù)制代碼 代碼如下:

[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

3.組合

最后組合下,還記得 {3} 的含義嗎,代表這個(gè)字符或組合出現(xiàn)3次:

注意:. 點(diǎn)號別忘了用 \ 轉(zhuǎn)義下

復(fù)制代碼 代碼如下:

^([1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.(0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

大功告成,有沒有豁然開朗的感覺,驗(yàn)證下:

6.寫在最后

到這里,正則表達(dá)式的基本用法就講完了,如果有問題可以給我留言評論,謝謝。

正則表達(dá)式在線校驗(yàn)工具:https://regex101.com/

到此這篇關(guān)于正則表達(dá)式那些讓人頭暈的元字符的文章就介紹到這了,更多相關(guān)正則表達(dá)式 元字符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 十分鐘上手正則表達(dá)式 上篇
  • 正則表達(dá)式常見的4種匹配模式小結(jié)
  • 正則表達(dá)式分組與引用的使用
  • 正則表達(dá)式量詞與貪婪的使用詳解
  • 正則表達(dá)式之分組的回溯引用問題
  • 十分鐘上手正則表達(dá)式 下篇

標(biāo)簽:南昌 欽州 中衛(wèi) 駐馬店 臨夏 黑河 延邊 阜陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式那些讓人頭暈的元字符》,本文關(guān)鍵詞  正則,表達(dá)式,那些,讓人,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式那些讓人頭暈的元字符》相關(guān)的同類信息!
  • 本頁收集關(guān)于正則表達(dá)式那些讓人頭暈的元字符的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章