摘要:元字符使正則表達式具有處理能力。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符即位于元字符前面的字符在目標對象中的出現模式。
正則表達式真好玩,上一篇大家應該掌握了一些基礎的操作,想必應該掌握的還不錯,那么本篇帶你掌握一些進階操作。
正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。
元字符使正則表達式具有處理能力。
所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
以上關于元字符的介紹內容來自網絡,僅供參考。
而本次要介紹的元字符是 []
(和),有什么作用呢?
上一篇我們了解到可以通過英文句號 .
來匹配任意字符,但有時候我們就很明確從某些字符里面匹配就好了。比如我們就只想匹配 C 和 H 兩個字符。
在正則表達式里面,我們可以通過元字符 []
來定義一個字符集合。這樣就能夠匹配集合里面的成員了。
直接看例子吧:
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"]
從結果我們可以發現,匹配到了 chocolate,首字母大小寫均可。
接下來開始我們的例子可能會變成數組了,如下:
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"]
以上例子也是比較清楚了,想必對于元字符和的概念應該掌握不錯了。
掌握這個知識之后,你就可以匹配已知的多個字符中的某一個了,并且也可以縮小全局匹配字母大小寫問題的范圍。
在之前的內容,我們好像一直都是匹配字符串中的字母,沒有匹配過數字問題,那么現在就來利用元字符來解決匹配數字的一系列問題。
直接來看例子吧:
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"]
我們通過 []
定義了數字類的集合,比較好理解,就不多解釋了。
但這樣寫法會不會覺得有點麻煩呢?可以省略點寫嘛。
當然可以,直接給出如下例子:
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
來進行數字集合的省略,這個做法就叫做利用字符集合區間。
當然,有數字集合也會有字母集合,如下:
A-Z,a-z 等等其它集合區間,但是得注意如果你想包括字母大小寫的話,像 A-z 這樣是不行的,可以查看 ASCII 字符表,Z 到 a 這個不是連續的,還會有其它字符,所以一般這樣是不行的。
有這些組合了,想必大家也能寫出很多一些進階的匹配了,在這里我就不舉例子了,大家掌握這個知識即可。
送你離開,千里之外…
上一小節我們掌握了區間的使用,但這是我們知道的區間,對于區間之外的呢?
或者說有時候我們知道我們自己除開字母了其它的都想匹配,或者除開數字了其它都想匹配,這又該如何做呢?
如果你是暴力大法的忠實粉絲,你可能會枚舉全部的情況,但有時候能考慮完全嘛?顯然不可以。
其實很簡單,取個反不就好了嗎?直接看如下例子:
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"]
看例子,取反字符為 ^
。本例子是將最后一個字符匹配非數字的,通過取反操作方便了許多,不用暴力考慮很多種情況了。
蕪湖,本小節內容到底就結束啦,感謝各位的閱讀,我們期待下一篇吧。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123721.html
摘要:在他的重學前端課程中提到到現在為止,前端工程師已經成為研發體系中的重要崗位之一。大部分前端工程師的知識,其實都是來自于實踐和工作中零散的學習。一基礎前端工程師吃飯的家伙,深度廣度一樣都不能差。 開篇 前端開發是一個非常特殊的行業,它的歷史實際上不是很長,但是知識之繁雜,技術迭代速度之快是其他技術所不能比擬的。 winter在他的《重學前端》課程中提到: 到現在為止,前端工程師已經成為研...
摘要:在他的重學前端課程中提到到現在為止,前端工程師已經成為研發體系中的重要崗位之一。大部分前端工程師的知識,其實都是來自于實踐和工作中零散的學習。一基礎前端工程師吃飯的家伙,深度廣度一樣都不能差。開篇 前端開發是一個非常特殊的行業,它的歷史實際上不是很長,但是知識之繁雜,技術迭代速度之快是其他技術所不能比擬的。 winter在他的《重學前端》課程中提到: 到現在為止,前端工程師已經成為研發體系...
摘要:給開發人員使用的正則表達式測試儀。一個令人非常興奮的項目,可以改變開發人員使用正則表達式的方式。它的目的是使正則表達式易于閱讀和使用命令編寫。實時的正則表達式測試工具,支持,,和。 正則表達式是每個程序開發人員的必備技能。任何開發項目,不管使用什么編程語言,都需要從給定的數據提取值并進行驗證。例如對輸入內容的驗證,過濾 URL 變量等等,正則表達式處理這樣的任務很容易,而且只需要很少的...
閱讀 2186·2021-11-18 10:02
閱讀 3288·2021-11-11 16:55
閱讀 2694·2021-09-14 18:02
閱讀 2426·2021-09-04 16:41
閱讀 2055·2021-09-04 16:40
閱讀 1165·2019-08-30 15:56
閱讀 2212·2019-08-30 15:54
閱讀 3160·2019-08-30 14:15