正则表达式

说明

  正则表达式是用于进行文本匹配的工具,有可能字符串里有不止一个部分满足给定的正则表达式,这时每一个这样的部分被称为一个匹配

特殊代码

表1.常用的特殊代码

代码/语法

说明

.

匹配除换行符以外的任意字符

\w

匹配字母或数字

\s

匹配任意的空白符

\d

匹配数字

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

 

 

字符转义:\

重复:

表2.常用的量词

代码/语法

说明

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{n}

重复n次

{n,}

重复n次或更多次

{n,m}

重复n到m次

 

反义

表3.常用的反义代码

代码/语法

说明

\W

匹配任意不是字母和数字的字符

\S

匹配任意不是空白符的字符

\D

匹配任意非数字的字符

\B

匹配不是单词开头或结束的位置

[^x]

匹配除了x以外的任意字符

[^aeiou]

匹配除了aeiou这几个字母以外的任意字符

   注意:^在中括号”[]”中被使用的话就是表示字符类的否定,如果不是的话就是表示限定开头

   例如:^[a-z]表示的是以小写字母开始,[^a-z]表示匹配非小写字母

 

Tips:在正则表达式中有单行和多行模式  

  多行模式:Multiline修饰的是^与$,就是说Multiline为false的时候,^只能匹配字符串开头,$只能匹配字符串结尾,Multiline为true的时候,^可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符\n之后的位置),$可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符\n之前的位置),换句话说,匹配每一行

  单行模式:(开启则“ . ”号会匹配所有字符,不开启则匹配除了换行符之外的所有字符)Singleline修饰的是'.',就是说Singleline为true的时候匹配的是所有字符(包括\n),Singleline为false的时候,匹配的是除\n外的所有字符。

  举个例子:(https://tool.lu/regex/ 在线工具)

  这是一段测试字符串

  1)正则表达式为.+

    1.单行模式

      

    2.多行模式

      

    3.单行模式+多行模式 <==> Multiline=true Singleline=true  因为正则表达式中没有^$所以默认是整个字符串匹配所以只会有一个匹配结果(和单行匹配结果一致)

    4.无模式 <==> Multiline=false Singleline=false 因为正则表达式中没有^$并且"."不能匹配\n所以匹配三处"abab1\n\nabca\n123ac\n"(这个代表整个字符串)

   2)正则表达式为^.+$

     1.单行模式

      

       "abab1\n\nabca\n123ac\n"

     2.多行模式

      

       "abab1\n

       \n

       abca\n

       123ac\n"(这个代表按行匹配)

    3.单行模式+多行模式 <==> Multiline=trueSingleline=true  这就意味着'.'匹配换行,并且按行匹配

       "abab1\n

       \n

       abca\n

       123ac\n"(这个代表按行匹配)

      也许你会问这和上面有什么不同,那么我们把正则表达式换成[ab]{2}\w+和^[ab]{2}\w+$来试下单行模式+多行模式

      [ab]{2}\w+

      其他几种情况结果都一样

      ^[ab]{2}$

   

 

      原因:[ab]{2}\w+没有^$没有'.',无论是单行模式还是多行模式,结果都是整个字符串去匹配[ab]{2}\w+,^[ab]{2}$由于没有'.',无所谓单行模式,此时如果不是多行模式,那么是整个字符串去匹配,如果是多行模式,那么是逐行去匹配

    4.无模式

      

   如果觉得弄清楚的话自己可以看看a.*a、^a.*a$与样例中的匹配情况

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

JS中没有单行模式!!!!!!!!!!!只有三种对象模式:g (全文查找出现的所有 pattern), i (忽略大小写), m (多行查找) 

 

posted @ 2018-01-31 16:22  CCxiao5  阅读(151)  评论(0编辑  收藏  举报