正则表达式第二回--元字符、类

元字符

正则表达式里面包含两种东西,一种叫元字符,一种叫原义文本字符。

这么说好像有点故作高深把话讲绕的感觉,简而言之,元字符就是关键字,原义文本字符就是自定义规则字。

元字符,或者叫保留字,表示这些字已经被正则“抢先注册”了,也就是占用了。

正则在抢先注册这些关键字的时候,已经尽量挑了一些比较冷门的字符,如果你就是非要使用这些字符作为自己创建规则的一部分,那么需要手动转义一下,避免与正则关键字发生冲突。

常见的元字符如下:

具意元字符--只匹配单个确切字符

  转义字符

  或

()   分组符

{}   量词符

[]    类符

\n    换行符

\r    回车符

 

边界匹配元字符--只用于定位,不算在规则里面(注意⚠️:这里的边界只是用来定位的,不参与替换规则,比如\bis\b表示一个小写的is单词,替换成IS的时候,单词边界是不参与的)

^    开头字符

  结尾字符

\b    单词边界字符boundary

 

预定义类元字符--匹配一类符合条件的字符

  除换行符和回车符之外的任意单个字符

\d    数字digit

\D    非数字

\w    单词字符word,包括下划线在内,相当等于[A-Za-z0-9_]

\W    非单词

\s    空白符space

\S   非空白

 

量词元字符--一种用于计数的字符

出现任意次

出现0次或1次

至少出现一次

{n} 具体出现n次

{m,n}  出现m~n次,如{3,5}表示最少出现3次,最多出现5次

{n,}   最少出现n次

{0, n} 最多出现n次

 

类表示一类字符,我们知道正则跟字符串是一一对应的,但是有时候我们想匹配多种情况,比如"A规则和B规则,只要有一个规则能匹配上就行了",这时候我们就需要类,它里面存放着多个规则,不同规则之间是一种“或”的关系。

简单来说,类就是一堆规则,不是一个规则

const reg = /[abc]/g

 上面这个简单的示例表示只要匹配到a或b或c任意一个就可以了,当然这个类也是可以取反的。

const reg = /[^abc]/g

 

这里表示,不属于a或b或c任意一个,即不属于这个类里面的任何规则。 

在类里面,可以写单个规则字(如a,b,c,1,2,3这种),也可以写范围规则字。这里面所谓的范围规则字一把般只有三种,那就是0-9,a-z, A-Z。

const reg = /a-zA-Z0-9/g

 

这里面只有三个规则字,分别是a-z、A-Z、0-9。

-并不是元字符,但是,当它左右同时连接了数字或字母时,它就是一个元字符。

我们说类是进行范围匹配的核心,像之前的\d,它能代表任意一个数字,也就是0~9任意哪个都行,实际上它等价于[0-9]。

这种就是预定义类字符,他从类衍生出来,我们可以这么看:预定义类元字符,就相当等于一些常见的类的简写

 

总结

正则表达式只由两种东西组成:关键字自定义规则字。关键字包含四种:一是精确匹配的具意字符,二是只用于定位的边界字符,三是匹配多种情况,由类衍生出来的预定义类字符。自定义规则字,则是我们自己写的业务字符,如"6666", "Linda",'Jack'等等,四是用于计数的量词字符。

 

posted @ 2020-03-04 14:25  陌上兮月  阅读(219)  评论(0编辑  收藏  举报