三 、 使用元字符
正则表达式中的元字符一般分为两种:第一种是匹配字符的,比如 .(点);另一种是为了满足语法的需要,比如 [ ]
1 、对特殊字符进行转义
有时候我们需要从文本中匹配到一些特殊的字符。但是这些字符在正则表达式中哟时候代表一些特殊含义,比如 [ 和 ] 、 .(点)等,这些字符就是正则表达式中的元字符。
当你需要匹配一个特殊的字符的时候,你需要对字符进行转义 ,即用 \ (反斜杠) 加上你要匹配的字符。例如: [ ( 匹配字符[ )
注意:
配对的元字符(如 [ 和 ])不用做元字符的时候必须转义,否则正则表达式会抛出错误。在程序中会失效。
2 、匹配空白字符
有时候我们需要将文本中的空白的符号匹配出来,比如换行符、换页符、制表符等。但是这在正则表达式中是不好直接输入,所有会用到表格中的这些字符
字符 | 含义 |
---|---|
[\b] | 回退并删除一个字符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
案例演示:
文本:
THIS IS REGX
THIS IS REGX TOO
正则表达式:
\r\n
结果:
我:emmmmmmmmm……相信我,是匹配到了的,就是没法显示……
\r\n组合使用的含义是匹配一个回车一个换行,匹配到之后你可以替换掉它们。
3、匹配特定的字符类别
在正则中哟一种字符,它们代表了一个字符集合,比如 \d 等价于[0-9]、\D等价于[^0-9],这些字符叫做字符类。类元字符的使用可以简化正则表达式
类元字符 | 等价表达式 | 说明 |
---|---|---|
\d | 等价于 [0-9] | 任何一个0-9的数字 |
\D | 等价于 [^0-9] | 任何一个非0-9的数字 |
\w | 等价于[a-zA-z_] | 任何一个大小写的字符或下划线 |
\W | 等价于[^a-zA-z_] | 任何一个非大小写的字符和下划线 |
\s | 等价于[\f\n\r\t\v] | 任何一个空白的字符 |
\S | 等价于[^\f\n\r\t\v] | 任何一个非空白的字符 |
案例演示:
文本:
11223
344abc
1a2b3c
4d5s6p
7 8w9t
正则表达式:
\d\w\d\w\d\w
结果:
1a2b3c
4d5s6p
4 、使用POSIX字符类
什么是POSIX字符类呢,POSIX字符类是许多正则表达实现都指出的一种简写形式。
注意,我说的是许多,不是所有JavaScript就不支持在正则表达式里使用POSIX字符类
字符类 | 等价表达式 | 说明 |
---|---|---|
[:alnum:] | [a-zA-Z0-9] | 任何一个字母或数字 |
[:alaph:] | [a-zA-Z] | 任何一个字母 |
[:black:] | [\t ] (\t后有一个空格) | 空格或制表符 |
[:contrl:] | 代表ASCII码0-31 和127 | 请参照ASCII码控制字符 |
[:digit:] | [0-9] | 任意一个数字 |
[:xdigit:] | [a-fA-F0-9] | 十六进制数 |
[:print:] | 我:emmmmmm……太多了 | 任何一个能打印的字符 |
[:graph:] | 我:emmmmmm……也不少 | 和print差不多,但是不包括空壳 |
[:lower:] | [a-z] | 任何一个小写字母 |
[:upper:] | [A-Z] | 任何一个大写字母 |
[:punct:] | [^[[:alnum:][:contr:]]] | 既不属于[:alnum:]也不属于[:contr:]的字符 |
[:space:] | [^\f\n\r\t\v] | 任何一个空白的字符 |
案例演示:
我们来看一段HTML的代码:
<body bgcolor="#333fff" text="#FFFFFF">
</body>
现在你想获取这个网页中的RGB值(RGB值,用一个十六进制数字给出的红、绿、蓝三基色的组合值,计算机可以根据RGB值将文字、图片、显示为这三种颜色按照一定比例调和出的颜色)
正则表达式
#[[:xdigit:]]{6}
结果:
是不是不知道{6}是什么意思? {6} 的意思是对前边的字符集中的数字重复匹配6次,具体的内容会在下篇博客中讲解(预知后事如何,且听下回分解)。
#333fff
#FFFFFF
总结
(1)如果要匹配元字符,必须对元字符进行转义
(2) 匹配空白字符,看上边的表格OK了
(3) 匹配特定的字符类,我们之前匹配一个字符类用到的是字符集合的方式,比如我们要匹配数字会这样写[0-9] ,今天认识到了字符类 \d就可以少打几个字符了,更重要的是提高了正则表达式的可读性。类元字符还有 : \D 、\w、\W 、\s 、\S等,你都知道是什么意思吗?
(4) 还记得POSIX字符类有哪些吗?记住全部优点困难的话,就找几个自己常用的记住吧,能提高你编写正则的效率的呢,但是要注意你使用的正则表达式的实现是不是支持POSIX字符类