预定义类
预定义类指的是某些常见模式的简写方式。JavaScript中给出的字符类别可以很容易地完成某些正则匹配,例如,大写字母、小写字母和数字可以使用“\w”直接表示;若要匹配0~9之间的数字可以使用“\d”表示。有效地使用字符类别可以使正则表达式更加简洁,便于阅读。常用的字符类别如表1所示。
表1 预定义符
字符 | 含义 |
---|---|
. | 匹配除“\n”外的任何单个字符 |
\d | 匹配所有0~9之间的任意一个数字,相当于[0-9] |
\D | 匹配所有0~9以外的字符,相当于[^0-9] |
\w | 匹配任意的字母、数字和下划线,相当于[a-zA-Z0-9] |
\W | 除所有字母、数字和下划线以外的字符,相当于[^a-zA-Z0-9] |
\s | 匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f] |
\S | 匹配非空格的字符,相当于[^\t\r\n\v\f] |
\f | 匹配一个换页符(form-feed) |
\b | 匹配单词分界符。如“\bg”可以匹配“best grade”,结果为“g” |
\B | 非单词分界符。如“\Bade”可以匹配“best grade”,结果为“ade” |
\t | 匹配一个水平制表符(tab) |
\n | 匹配一个换行符(linefeed) |
\xhh | 匹配ISO-8859-1值为hh(2个16进制数字)的字符,如“\x61”表示“a” |
\r | 匹配一个回车符(carriage return) |
\v | 匹配一个垂直制表符(vertical tab) |
\uhhhh | 匹配Unicode 值为 hhhh (4个16进制数字)的字符,如“\u597d”表示“好” |
为了方便读者理解字符类别的使用,下面我们以“.”和“\s”为例进行演示。
var str = 'good idea';
var reg = /\s../gi; // 正则对象
str.match(reg); // 匹配结果:[" id"]
在上述代码中,match()方法可以在目标字符串中正则匹配出所有符合要求的内容,匹配成功后将其保存到数组中,匹配失败则返回false。正则对象reg用于匹配空白符后的任意两个字符(除换行外)。因此在控制台的输出结果中,可以看到id前有一个空格。模式修饰符g表示全局匹配,用于在找到第一个匹配之后仍然继续查找;i表示忽略大小写。