[...]中括号在正则表达式里面也是一个很是经常使用的知识点,它的主要做用是设置一个集合和范围。正则表达式
一:集合
[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); //["+", "-"]
这里的"^"和"-"都只是字符自己,因此咱们能匹配到["+", "-"]。固然若是在[]里面给这些元字符转义加上"",也不会有错,依然能匹配获得。