node . js学习笔记之正则表达式

  

每种编程语言里都有正则表达式,而且内容基本上都是一样的,今天就来说说我对正则表达式的理解。

我觉得正则表达式实际上就是一种规则,一种针对字符串的规则,我们可以通过正则表达式来获取我们想要的同类型字符串或者检验某一字符串是否符合我们的要求。

正则表达式可以参与计算的符号有:


(),小括号,或叫圆括号,是一个分组,也是个集合。他的作用是一个匹配一串字符。比如:

/(abc)/;,该句的作用是匹配源字符串中是否有“abc”这样的一串字符;


[],中括号,或叫方括号,是一个集合,他的作用是匹配集合中的<>强其中一个强字符。比如:

/(abc);,该句的作用是匹配源字符串中是否有“a”或者“b”或者“c”中的其中一个。


{},大括号,或叫花括号,是一个数量范围,他的作用是匹配某串字符是否有N个,不能直接使用,需要和其他能代表字符的表达式配合使用。他有三种用法:

{1}匹配一次,{1,}匹配最少一次,最多不限,{1,5}匹配最少一次,最多5次,比如:

/(abc){2}/这句的意思是abc其中的一个是否连续出现2次,就是匹配源字符串中是否有aa或bb或cc;

/(abc){2,}/这句的意思是abc其中的一个是否最少连续出现2次。

/(abc){2、5}/这句的意思是abc其中的一个是否最少连续出现2次,最多出现5次。

其实这里有个坑:

let  a =, (abc) {2、5}/;   let  b =,“aaaaaa”;   console.log (“(b));//结果为真正的

为什么6个也能匹配成功吗?我的理解是:匹配是检索源字符串中的其中一串是否符合正则,意思就是6个一个中肯定有连续的2 - 5个,所以能匹配成功。这个坑先记下,讲到后面的符号时再来破他。


\,反斜杠,是转义符,意思是反斜杠后面将要用到的字符不是表面上看起来那样的意思,这句话有点绕,看例子就能明白了:

/\(/,小括号在正则中的意思是分组,但用反斜杠标注之后,那他的意思就不是表面上分组的意思了,那是什么意思?意思是他就是个左小括号。再来个例子就能更明白点:

/\ d/;d在正则中表面上是一个字符,但用反斜杠标注之后,他就不是个字符了,就代表所有的数字。


^,这个符号暂时没有中文名字,英文名字叫脱字符号,他有两个作用,在表达式的开头写上他,代表字符串的开的头,写到集合中,就代表非,就是不能有集合中的字符。还是例子能说明事儿:

//^;这句的意思是要匹配的字符串的第一个字符必须是一个;

let =/^/;   let  b =,“abc”;   let  c =,“bacd”;   console.log (“(b));//真的,,b字符串开头第一个字符是,所以能匹配成功。   console.log (“(c));//假;,c字符串开头第一个字符不是,所以匹配失败。


美元、美元符号,作用是匹配字符串的结尾,和^的效果一样,位置相反,直接看例子:

let  a=//美元;   let  b =,“bca”;   let  c =,“cad”;   console.log (“(b));//真的,,b字符串最后一个字符是,所以能匹配成功。   console.log (“(c));//假;,c字符串最后一个字符不是,所以匹配失败。


|竖线,或的意思,和代码里常用的| |用法一模一样,就不再多说了。


?,问号,量的词,和{}用法一样,意思是匹配0次到1次。效果等同{0,1};


*,星号,量的词,和{}用法一样,意思是匹配0次到N次。效果等同{0};


+,加号,量的词,和{}用法一样,意思是匹配1次到N次。效果等同{1,},


。,点号,不是量的词,意思是可以匹配<强>任意一个字符。


另外还有一些转义用法:

\ d代表任意一个数字效果等同[0 - 9],

\ d代表任意一个不是数字的字符,效果等同[^ 0 - 9];

\ w代表任意一个字母,数字,_(下划线),汉字。功能很强大。

\ w代表任意一个不是字母,数字,_(下划线),汉字的字符。

等等,不过那些一般情况下用不到,这里就不详细说了。


下面要说一下正则表达式的模式:

g,全局模式,意思是要把源字符串从头到尾匹配一遍,不论中间是否匹配成功,如果不加克模式,那么匹配成功一次之后就不再向后匹配了。

我不区分大小写模式,这个很明的了,不用细说。

m,多行模式


下面找几个例子来拆解一下应该能更容易明白:

node . js学习笔记之正则表达式