摘要:中括号在正则表达式里面也是一个非常常用的知识点,它的主要作用是设置一个集合和范围。一集合在正则表达式里表示一个包含或者或者的集合,匹配三者之中的任意一个。来看一个例子上面的正则表达式需要匹配的是数字和之间为三者中的任意一个。
[...]中括号在正则表达式里面也是一个非常常用的知识点,它的主要作用是设置一个集合和范围。
一:集合
[abc]在正则表达式里表示一个包含a或者b或者c的集合,匹配三者之中的任意一个。注意元素之间不用空格和逗号隔开,因为在正则表达式里,[]里的空格或者逗号也会被判定为一个匹配元素。
来看一个例子:
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占了三个位置,是不匹配我们给出的正则的。
二:范围
[1-9]表示数字1到9之间任意一个数字,[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] 除了数字之外的任意字符,等同于 D [^s] 除了空格之外的任意字符,等同于 S
看一个例子:
let reg = /[^0-9a-z]/ig; "nana123@gmail.com".match(reg); //["@", "."]
这里我们需要匹配除了字母和数字之外的字符,所以我们匹配到了"@"和"."这两个字符。
四:[...]里的元字符
我们知道元字符都有特色的含义与作用,比如".", "+", "?", "()"等,如果我们要把他们作为普通字母匹配,需要用""转义。例如,如果我们要匹配".", 需要用到"."。但是当他们出现在[]里面的时候,就失去了他们特色的作用,就做回了自己本身,也不需要再用后斜杠转义。
但是前面我们也讲到^出现在[]内部最前面,还有"-"出现在[a-z]这种情况下,还是有特殊意义的。那么当^不出现在[]内部最前面,还有"-"不出现在[a-z]这种情况下,他们也就是自己本身。例如:
let reg = /[-().^+]/g; "1 + 2 - 3".match(reg); //["+", "-"]
这里的"^"和"-"都只是字符本身,所以我们能匹配到["+", "-"]。
当然如果在[]里面给这些元字符转义加上"",也不会有错,依然能匹配得到。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104032.html
摘要:正则表达式一直是里比较难以掌握的点。在中创建正则的两种方式使用字面量这就是正则表达式的字面量语法,表示正则表达式的模式,为正则表达式的标志。字面量形式的正则表达式一般使用较多,也推荐大家尽可能使用这种形式,简洁易读,符合正常的使用习惯。 正则表达式一直是js里比较难以掌握的点。 看不懂,学不会,记不住。 每次需要用到正则的时候,都需要再去查找资料。 今天花时间把正则的知识点总结下,希望...
摘要:选择分组和引用正则表达式的语法还包括指定选择项子表达式分组和引用前一子表达式的特殊字符。带圆括号的表达式的另一个用途是允许在同一正则表达式的后部引用前面的子表达式。 正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的 RegExp类 表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进 行强大的模式匹配和文本检索与...
阅读 1433·2021-09-03 10:29
阅读 3456·2019-08-29 16:24
阅读 2007·2019-08-29 11:03
阅读 1409·2019-08-26 13:52
阅读 2924·2019-08-26 11:36
阅读 2785·2019-08-23 17:19
阅读 559·2019-08-23 17:14
阅读 810·2019-08-23 13:59