正则表达式

说明

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

特殊代码

表1.常用的特殊代码

代码/语法

说明

.

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

w

匹配字母或数字

s

匹配任意的空白符

d

匹配数字



匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

字符转义:

重复:

表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的时候,^可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符 之后的位置),$可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符 之前的位置),换句话说,匹配每一行

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

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

  这是一段测试字符串

  1)正则表达式为.+

    1.单行模式

      

    2.多行模式

      

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

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

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

     1.单行模式

      

       "abab1 abca 123ac "

     2.多行模式

      

       "abab1

       

       abca

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

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

       "abab1

       

       abca

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

      也许你会问这和上面有什么不同,那么我们把正则表达式换成[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 (多行查找) 

原文地址:https://www.cnblogs.com/cc-xiao5/p/8392932.html