【正则[规则]表达式学习心得】3、悟透字符类
一、字符类:是规则表达式用来表示字符的语法,一般是把直接量放在[]中括号中来表示,例如:[1a79abcd\b\x62\142hj]
字符类又分为以下几种类型:
1、简单类
例如,要匹配a、b、c,字符类应该是[abc],这个称之为简单类(simple class),因为它确切地指定了要查找的那些字符。
如:[ab2\b\x62\142]
2、负向类
有时候,除了特定的一些,您可能会想要匹配所有的字符。这种情况下,可以使用负向类(negation class),它可以指定要排除的字符,
例如,要匹配除了a和b的所有字符,那么这个字符类就是[^ab]。脱字符号(^)告诉正则表达式字符不能匹配后面跟着的字符。 如:[^abc]
3、范围类
到现在为止,字符类仍然要求输入所有的包含或者排除的字符。假设要匹配所有的字母表中的字符,但是又实在不想逐个输入,这时,可以使用范围类(range class)指定从a到z之间的范围[a-z]。这里最关键的地方是那条横线(-),它在这里应该看作是“从什么到什么”而不是减号。
注意:[a-z]仅仅匹配了小写字母,除非正则表达式使用i选项来指明是不区分大小写的,如果仅仅要匹配大写字母,请使用[A-Z],另外需要 遵循字符编码的顺序来匹配。
如:[1-4]、[\u0030-\u0039] 等遵循字符编码的顺序来匹配的
4、组合类
组合类(combination class)是由几种其它的类组合而成的字符类,
例如假设要匹配所有从a~m的字母以及从1~4的数字,以及一个换行符,那么所用到的类应该这样:[a-m1-4\n]
5、预定义类
最后的:因为自己用语法来写字符类往往要写很多代码,而一些使用频率比较高的字符类,js引擎就事先定义好了,采用的形式如:\d等的转义序列。
由于某些模式会反复用到,所有可以使用一组预定义字符类以让我们更方便地指定复杂类。
全部如下:
. = [^\n\r] 除了换行和回车的任意字符
\d = [0-9] 数字
\D = [^0-9] 非数字字符
\s = [ \t\n\x0B\f\r] 空白字符
\S = [^ \t\n\x0B\f\r] 非空白字符
\w = [a-zA-Z_0-9] 单词字符(所有的字母、所有的数字、下划线)
\W = [^a-zA-Z_0-9] 非单词字符
总共七个