在正则表达式语法中,方括号表示字符范围。在方括号内可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,中间字符可以省略,仅使用连字符(-)表示。如果在方括号内添加脱字符(^)前缀,还可以表示范围之外的字符。例如:
- [abc]:查找方括号内任意一个字符。
- [^abc]:查找不在方括号内的字符。
- [0-9]:查找从0至9范围内的数字,即查找数字。
- [a-z]:查找从小写a到小写z范围内的字符,即查找小写字母。
- [A-Z] :查找从大写A到大写Z范围内的字符,即查找大写字母。
- [A-z]:查找从大写A到小写z范围内的字符,即所有大小写的字母。
【示例1】字符范围遵循字符编码的顺序进行匹配。如果将要匹配的字符恰好在字符编码表中特定区域内,就可以使用这种方式表示。
如果匹配任意ASCII字符:
var r = /[\u0000-\u00ff]/g;
如果匹配任意双字节的汉字:
var r = /[^\u0000-\u00ff]/g;
如果要匹配任意大小写字母和数字计:
var r = /[a-zA-Z0-9]/g;
使用Unicode编码设计,匹配数字:
var r = /[\u0030-\u0039]/g;
使用下面字符模式可以匹配任意大写字母:
var r = /[\u0041-\u004A]/g;
使用下面字符模式可以匹配任意小写字母:
var r = /[\u0061-\u007A]/g;
【示例2】在字符范围内可以混用各种字符模式。
var s = "abcdez"; //字符串直接量 var r = /[abce-z]/g; //字符a、b、c,以及从e~z之间的任意字符 var a = s.match(r); //返回数组["a","b","c","e","z"]
【示例3】在中括号内不要有空格,否则会误解为还要匹配空格。
var r = /[0-9 ]/g;
【示例4】字符范围可以组合使用,以便设计更灵活的匹配模式。
var s = "abc4 abd6 abe3 abf1 abg7"; //字符串直接量 var r = /ab[c-g][1-7]/g; //前两个字符为ab,第三个字符为从c到g, ////第四个字符为1~7的任意数字 var a = s.match(r); //返回数组["abc4"," abd6"," abe3"," abf1"," abg7"]
【示例5】使用反义字符范围可以匹配很多无法直接描述的字符,实现以少应多的目的。
var r = /[^0123456789]/g;
在这个正则表达式中,将会匹配除了数字以外任意的字符。反义字符类比简单字符类显得功能更加强大和实用。