摘要:中括號在正則表達式里面也是一個非常常用的知識點,它的主要作用是設置一個集合和范圍。一集合在正則表達式里表示一個包含或者或者的集合,匹配三者之中的任意一個。來看一個例子上面的正則表達式需要匹配的是數(shù)字和之間為三者中的任意一個。
[...]中括號在正則表達式里面也是一個非常常用的知識點,它的主要作用是設置一個集合和范圍。
一:集合
[abc]在正則表達式里表示一個包含a或者b或者c的集合,匹配三者之中的任意一個。注意元素之間不用空格和逗號隔開,因為在正則表達式里,[]里的空格或者逗號也會被判定為一個匹配元素。
來看一個例子:
let reg = /1[abc]2/g; "1a2".match(reg); //["1a2"] "1b2".match(reg); //["1b2"]
上面的正則表達式需要匹配的是數(shù)字1和2之間為a,b,c三者中的任意一個。所以‘1a2’, "1b2"都可以匹配。
再看下面一個例子:
let reg = /1[abc]2/g; "1abc2".match(reg); //null
仍然是上面的正則表達式,但是‘1abc2’是不匹配的。這里要注意的一點就是[...]里面的元素,當只有出現(xiàn)其中的任意一個時才能匹配,可以理解為[...]里面的元素只占一個位置。我們這里的abc占了三個位置,是不匹配我們給出的正則的。
二:范圍
[1-9]表示數(shù)字1到9之間任意一個數(shù)字,[a-z]表示a到z之間的任意一個小寫字母。在[]里用連字符(-)鏈接一個范圍的兩邊,就能用來表示一個范圍。
let reg = /[1-9][a-z]/g; "5d".match(reg); //["5d"] "d1".match(reg); // null
三:集合和范圍之外
[^]當我們在中括號里的元素前加上一個^,就表示匹配除此之外的元素。
[^abc] 除了"a","b", "c"之外的任意字符 [^0-9] 除了數(shù)字之外的任意字符,等同于 D [^s] 除了空格之外的任意字符,等同于 S
看一個例子:
let reg = /[^0-9a-z]/ig; "nana123@gmail.com".match(reg); //["@", "."]
這里我們需要匹配除了字母和數(shù)字之外的字符,所以我們匹配到了"@"和"."這兩個字符。
四:[...]里的元字符
我們知道元字符都有特色的含義與作用,比如".", "+", "?", "()"等,如果我們要把他們作為普通字母匹配,需要用""轉(zhuǎn)義。例如,如果我們要匹配".", 需要用到"."。但是當他們出現(xiàn)在[]里面的時候,就失去了他們特色的作用,就做回了自己本身,也不需要再用后斜杠轉(zhuǎn)義。
但是前面我們也講到^出現(xiàn)在[]內(nèi)部最前面,還有"-"出現(xiàn)在[a-z]這種情況下,還是有特殊意義的。那么當^不出現(xiàn)在[]內(nèi)部最前面,還有"-"不出現(xiàn)在[a-z]這種情況下,他們也就是自己本身。例如:
let reg = /[-().^+]/g; "1 + 2 - 3".match(reg); //["+", "-"]
這里的"^"和"-"都只是字符本身,所以我們能匹配到["+", "-"]。
當然如果在[]里面給這些元字符轉(zhuǎn)義加上"",也不會有錯,依然能匹配得到。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104032.html
摘要:正則表達式一直是里比較難以掌握的點。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結(jié)下,希望...
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
閱讀 1433·2021-09-03 10:29
閱讀 3458·2019-08-29 16:24
閱讀 2010·2019-08-29 11:03
閱讀 1409·2019-08-26 13:52
閱讀 2925·2019-08-26 11:36
閱讀 2786·2019-08-23 17:19
閱讀 560·2019-08-23 17:14
閱讀 811·2019-08-23 13:59