轻松掌握正则表达式(4)

三 、 使用元字符

正则表达式中的元字符一般分为两种:第一种是匹配字符的,比如 .(点);另一种是为了满足语法的需要,比如 [ ]

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字符类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值