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

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

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

常见错误用法:

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

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

1、简单匹配:

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

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

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

[bcf]at
reg.test('bat') // -> true
reg.test('cat') // -> true
reg.test('fat') // -> true

2、范围匹配:

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

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

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

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

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

3、排除型字符组:

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值