正則表達式- [...]

[...]中括號在正則表達式裏面也是一個很是經常使用的知識點,它的主要做用是設置一個集合範圍。正則表達式

一:集合
[abc]在正則表達式裏表示一個包含a或者b或者c的集合,匹配三者之中的任意一個。注意元素之間不用空格和逗號隔開,由於在正則表達式裏,[]裏的空格或者逗號也會被斷定爲一個匹配元素。
來看一個例子:code

let reg = /1[abc]2/g;
'1a2'.match(reg); //["1a2"]
'1b2'.match(reg); //["1b2"]

上面的正則表達式須要匹配的是數字1和2之間爲a,b,c三者中的任意一個。因此‘1a2’, '1b2'均可以匹配。
再看下面一個例子:集合

let reg = /1[abc]2/g;
'1abc2'.match(reg); //null

仍然是上面的正則表達式,可是‘1abc2’是不匹配的。這裏要注意的一點就是[...]裏面的元素,當只有出現其中的任意一個時才能匹配,能夠理解爲[...]裏面的元素只佔一個位置。咱們這裏的abc佔了三個位置,是不匹配咱們給出的正則的。mail

二:範圍
[1-9]表示數字1到9之間任意一個數字,[a-z]表示a到z之間的任意一個小寫字母。在[]裏用連字符(-)連接一個範圍的兩邊,就能用來表示一個範圍。co

let reg = /[1-9][a-z]/g;
'5d'.match(reg); //["5d"]
'd1'.match(reg); // null

三:集合和範圍以外字符

[^]當咱們在中括號裏的元素前加上一個^,就表示匹配除此以外的元素。let

[^abc] 除了'a','b', 'c'以外的任意字符
 [^0-9] 除了數字以外的任意字符,等同於 \D
 [^\s] 除了空格以外的任意字符,等同於 \S

看一個例子:數字

let reg = /[^0-9a-z]/ig;
'nana123@gmail.com'.match(reg); //["@", "."]

這裏咱們須要匹配除了字母和數字以外的字符,因此咱們匹配到了"@"和"."這兩個字符。ab

四:[...]裏的元字符
咱們知道元字符都有特點的含義與做用,好比".", "+", "?", "()"等,若是咱們要把他們做爲普通字母匹配,須要用""轉義。例如,若是咱們要匹配".", 須要用到"."。可是當他們出如今[]裏面的時候,就失去了他們特點的做用,就作回了本身自己,也不須要再用後斜槓轉義。gmail

可是前面咱們也講到^出如今[]內部最前面,還有"-"出如今[a-z]這種狀況下,仍是有特殊意義的。那麼當^不出如今[]內部最前面,還有"-"不出如今[a-z]這種狀況下,他們也就是本身自己。例如:

let reg = /[-().^+]/g;
"1 + 2 - 3".match(reg); //["+", "-"]

這裏的"^"和"-"都只是字符自己,因此咱們能匹配到["+", "-"]。固然若是在[]裏面給這些元字符轉義加上"",也不會有錯,依然能匹配獲得。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息