摘要:元字符使正則表達(dá)式具有處理能力。所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符即位于元字符前面的字符在目標(biāo)對(duì)象中的出現(xiàn)模式。
正則表達(dá)式真好玩,上一篇大家應(yīng)該掌握了一些基礎(chǔ)的操作,想必應(yīng)該掌握的還不錯(cuò),那么本篇帶你掌握一些進(jìn)階操作。
正則表達(dá)式語(yǔ)言由兩種基本字符類型組成:原義(正常)文本字符和元字符。
元字符使正則表達(dá)式具有處理能力。
所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式。
以上關(guān)于元字符的介紹內(nèi)容來自網(wǎng)絡(luò),僅供參考。
而本次要介紹的元字符是 []
(和),有什么作用呢?
上一篇我們了解到可以通過英文句號(hào) .
來匹配任意字符,但有時(shí)候我們就很明確從某些字符里面匹配就好了。比如我們就只想匹配 C 和 H 兩個(gè)字符。
在正則表達(dá)式里面,我們可以通過元字符 []
來定義一個(gè)字符集合。這樣就能夠匹配集合里面的成員了。
直接看例子吧:
</>復(fù)制代碼
let str = "Chocolate wants 100,000 fans, Chocolate love chocolate";let reg = /[Cc]hocolate/g;let res = str.match(reg);console.log(res); // ["Chocolate", "Chocolate", "chocolate"]
從結(jié)果我們可以發(fā)現(xiàn),匹配到了 chocolate,首字母大小寫均可。
接下來開始我們的例子可能會(huì)變成數(shù)組了,如下:
</>復(fù)制代碼
let arr = ["Choco","choco", "nhoco", "yhoco", "hearling"];let reg = /[Ccyn]hoco/g;let res = arr.filter(item=>item.match(reg));console.log(res); // ["Choco", "choco", "nhoco", "yhoco"]
以上例子也是比較清楚了,想必對(duì)于元字符和的概念應(yīng)該掌握不錯(cuò)了。
掌握這個(gè)知識(shí)之后,你就可以匹配已知的多個(gè)字符中的某一個(gè)了,并且也可以縮小全局匹配字母大小寫問題的范圍。
在之前的內(nèi)容,我們好像一直都是匹配字符串中的字母,沒有匹配過數(shù)字問題,那么現(xiàn)在就來利用元字符來解決匹配數(shù)字的一系列問題。
直接來看例子吧:
</>復(fù)制代碼
let arr = ["choco1","choco2", "nhoco3", "yhoco6", "hearling"];let reg = /[Ccyn]hoco[0123456789]/g;let res = arr.filter(item=>item.match(reg));console.log(res); // ["choco1", "choco2", "nhoco3", "yhoco6"]
我們通過 []
定義了數(shù)字類的集合,比較好理解,就不多解釋了。
但這樣寫法會(huì)不會(huì)覺得有點(diǎn)麻煩呢?可以省略點(diǎn)寫嘛。
當(dāng)然可以,直接給出如下例子:
</>復(fù)制代碼
let arr = ["choco1","choco2", "nhoco3", "yhoco6", "hearling"];let reg = /[Ccyn]hoco[0-9]/g;let res = arr.filter(item=>item.match(reg));console.log(res); // ["choco1", "choco2", "nhoco3", "yhoco6"]
我們可以在集合中通過 0-9
來進(jìn)行數(shù)字集合的省略,這個(gè)做法就叫做利用字符集合區(qū)間。
當(dāng)然,有數(shù)字集合也會(huì)有字母集合,如下:
A-Z,a-z 等等其它集合區(qū)間,但是得注意如果你想包括字母大小寫的話,像 A-z 這樣是不行的,可以查看 ASCII 字符表,Z 到 a 這個(gè)不是連續(xù)的,還會(huì)有其它字符,所以一般這樣是不行的。
有這些組合了,想必大家也能寫出很多一些進(jìn)階的匹配了,在這里我就不舉例子了,大家掌握這個(gè)知識(shí)即可。
送你離開,千里之外…
上一小節(jié)我們掌握了區(qū)間的使用,但這是我們知道的區(qū)間,對(duì)于區(qū)間之外的呢?
或者說有時(shí)候我們知道我們自己除開字母了其它的都想匹配,或者除開數(shù)字了其它都想匹配,這又該如何做呢?
如果你是暴力大法的忠實(shí)粉絲,你可能會(huì)枚舉全部的情況,但有時(shí)候能考慮完全嘛?顯然不可以。
其實(shí)很簡(jiǎn)單,取個(gè)反不就好了嗎?直接看如下例子:
</>復(fù)制代碼
let arr = ["choco1","chocol", "nhoco3", "yhoco6", "hearling"];let reg = /[Ccyn]hoco[^0-9]/g;let res = arr.filter(item=>item.match(reg));console.log(res); // ["chocol"]
看例子,取反字符為 ^
。本例子是將最后一個(gè)字符匹配非數(shù)字的,通過取反操作方便了許多,不用暴力考慮很多種情況了。
蕪湖,本小節(jié)內(nèi)容到底就結(jié)束啦,感謝各位的閱讀,我們期待下一篇吧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/123721.html
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書里的一些問題。將會(huì)討論安全的類型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類型檢測(cè)...
摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。 開篇 前端開發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研...
摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。開篇 前端開發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系...
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...
摘要:給開發(fā)人員使用的正則表達(dá)式測(cè)試儀。一個(gè)令人非常興奮的項(xiàng)目,可以改變開發(fā)人員使用正則表達(dá)式的方式。它的目的是使正則表達(dá)式易于閱讀和使用命令編寫。實(shí)時(shí)的正則表達(dá)式測(cè)試工具,支持,,和。 正則表達(dá)式是每個(gè)程序開發(fā)人員的必備技能。任何開發(fā)項(xiàng)目,不管使用什么編程語(yǔ)言,都需要從給定的數(shù)據(jù)提取值并進(jìn)行驗(yàn)證。例如對(duì)輸入內(nèi)容的驗(yàn)證,過濾 URL 變量等等,正則表達(dá)式處理這樣的任務(wù)很容易,而且只需要很少的...
閱讀 2200·2021-11-18 10:02
閱讀 3302·2021-11-11 16:55
閱讀 2706·2021-09-14 18:02
閱讀 2444·2021-09-04 16:41
閱讀 2076·2021-09-04 16:40
閱讀 1200·2019-08-30 15:56
閱讀 2222·2019-08-30 15:54
閱讀 3173·2019-08-30 14:15