正则表达式——字符组(Character Classes) [ ]

网友投稿 257 2022-09-25

正则表达式——字符组(Character Classes) [ ]

中括号在正则中称为字符组(Character class),顾名思义,字符组为一组字符,它表示在一个位置里可能出现的多种字符。注意这里强调只匹配一个位置哦。

例如:[abc]表示字符“a”或“b”或“c”。

常见错误用法:

因为[]本身表示的就是字符之间“或”的关系,因此在[]中使用“|”来表示“或”的关系是错误的。举例:

[a|b|c]表示的是“a”或“b”或“c”或“|”中的任意一个字符。

1、简单匹配:

示例1:[123] 可以分别匹配包含1-3这3个数的字符串中的一个。

[123]reg.test('1') // -> truereg.test('2') // -> truereg.test('3') // -> truereg.test('4') // -> falsereg.test('14') // -> truereg.test('25') // -> truereg.test('36') // -> true

示例2:匹配 bat、cat、fat。

[bcf]atreg.test('bat') // -> truereg.test('cat') // -> truereg.test('fat') // -> true

2、范围匹配:

[]支持用连字符“-”连接两个字符,来表示一个字符范围。需要注意的是,“-”前后的两个字符是有顺序的,即使用相同的编码时,后面的字符码位应大于或等于前面字符的码位(否则报错)。

[0-9]reg.test('0') // -> truereg.test('1') // -> truereg.test('2') // -> true

示例:匹配a~f和1-5之间的字符 [a-f1-5]

[a-c1-3]reg.test('a') // -> truereg.test('b') // -> truereg.test('c') // -> truereg.test('1') // -> truereg.test('2') // -> truereg.test('3') // -> true

注意:字符组内不要有空格

3、排除型字符组:

只要在左方括号后紧跟一个脱字符^即可。例如:

[^0-9]reg.test('1') // -> falsereg.test('2') // -> falsereg.test('a') // -> true

4、说明:大部分在正则中有特殊意义、在匹配其本身时需转义的字符,在[]内是不需要转义的。必须转义的只有“\”、“[”和“]”,而“^”出现在[]开始位置,“-”前后构成范围区间时需要转义,出现在其它位置不需要转义,例如[\^.$^{\[(|)*+?-\\]

5、补充:正则表达式的() 、[]、 {}区别:

() 是为了提取匹配的字符串(分组)。表达式中有几个()就有几个相应的匹配字符串。[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s{1,3}表示匹配一到三个空格。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jQuery-跨域问题的处理
下一篇:公关界的007:中秋前夕这部年度微电影,让多少人泪目了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~