十六进制:用前缀\x来给出,如:\x0A对应于ASCII字符10(换行符),其效果等价于\n。
八进制:用前缀\0来给出,数值本身可以是两位或三位数字,如:\011对应于ASCII字符9(制表符),其效果等价于\t。
四、使用POSIX字符类
POSIX字符类是很多正则表达式实现都支持的一种简写形式。Java也支持它,但JavaScript不支持。POSIX字符如下所示:
[:alnum:]
任何一个字母或数字,等价于[a-zA-Z0-9]
[:alpha:]
任何一个字母,等价于[a-zA-Z]
[:blank:]
空格或制表符,等价于[\t]
[:cntrl:]
ASCII控制字符(ASCII 0到31,再加上ASCII 127)
[:digit:]
任何一个数字,等价于[0-9]
[:graph:]
任何一个可打印字符,但不包括空格
[:lower:]
任何一个小写字母,等价于[a-z]
[:print:]
任何一个可打印字符
[:punct:]
既不属于[:alnum:]和[:cntrl:]的任何一个字符
[:space:]
任何一个空白字符,包括空格,等价于[^\f\n\r\t\v]
[:upper:]
任何一个大写字母,等价于[A-Z]
[:xdigit:]
任何一个十六进制数字,等价于[a-fA-F0-9]
POSIX字符和之前见过的元字符不太一样,我们来看一个前面利用正则表达式来匹配网页中的颜色的例子:
文本:<span>测试</span>
正则表达式:#[[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]]
结果:<spancolor: #ff6600">【#3636FF】;height:30px;width:60px;">测试</span>
注意:这里使用的模式以[[开头、以]]结束,这是使用POSIX字符类所必须的,POSIX字符必须括在[:和:]之间,外层[和]字符用来定义一个集合,内层的[和]字符是POSIX字符类本身的组成部分。
在java中的POSIX字符表示有所不同,不是包括在[:和:]之间,而是以\p开头,包括在{和}之间,且大小写有区别,同时增加了\p{ASCII},如下所示:
\p{Alnum}
字母数字字符:[\p{Alpha}\p{Digit}]
\p{Alpha}
字母字符:[\p{Lower}\p{Upper}]
\p{ASCII}
所有 ASCII:[\x00-\x7F]
\p{Blank}
空格或制表符:[ \t]
\p{Cntrl}
控制字符:[\x00-\x1F\x7F]
\p{Digit}
十进制数字:[0-9]
\p{Graph}
可见字符:[\p{Alnum}\p{Punct}]
\p{Lower}
小写字母字符:[a-z]
\p{Print}
可打印字符:[\p{Graph}\x20]
\p{Punct}
标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Space}
空白字符:[ \t\n\x0B\f\r]
\p{Upper}
大写字母字符:[A-Z]
\p{XDigit}
十六进制数字:[0-9a-fA-F]
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具: