正則表達式的一些匹配規則


1,字面量字符和元字符


  大部分字符在正則表達式中,就是字面的含義,比如 /a/ 匹配 a, /b/ 匹配b。這種只表示它字面量含義的被稱為字面量字符。

  除了字面量,還有一些字符有特殊含義,不代表字面意思,被稱為元字符

    1,點字符(.)

      點字符匹配除回車(\r)、換行(\n)、行分隔符(\u2028)和分段符(\u2029)之外的所有字符     注:碼點大於0xFFFF的Unicode字符不能被匹配,因為會被認為是兩個字符。      

     2,位置字符

      ^ 表示字符串的開始位置,  $ 表示字符串的結束位置。

    3,選擇符(|)

      豎線符號在正則中表示 ‘或關系’ , 即匹配其中之一即可。

    .............等等

2,轉義符


  正則中那些有特殊含義的元字符,如果要匹配它們本身,就要在前面加反斜杠。 比如要匹配 +, 就必須寫成 \+;

  在正則中,需要反斜杠轉義的一共有12個字符: ^ .  [ $ ( ) | * + ? { \\               注:如果使用RegExp方法生成正則,轉義需要加兩個斜杠,因為字符串需要先轉義一次。

3,特殊字符


  \r 匹配回車符

  \t 匹配制表符 tab

  \n 匹配換行符

  \v 匹配垂直制表符

  \f  匹配換頁符

  \0 匹配null字符

4,字符類


  字符類表示有一系列字符可供選擇,只要匹配其中一個就可以。所有可供選擇的字符放在中括號內,比如[abc] 表示 a b c之中任選一個。

  1,脫字符(^)

    如果方括號內的第一個字符為 ^ , 則表示取反。  [^]表示匹配一切字符。

  2,連字符(-)

    對於連續序列的字符,可以用-來進行簡寫。 a-z  0-9 A-Z  -u4e00-\u9fa5

5,預定義模式


  \d 匹配0-9的數字, 相當於[0-9]

  \D 匹配非0-9的字符。 相當於[^0-9]

  \w 匹配任意字母數字下划線。 相當於[0-9a-zA-Z_]

  \W 相當於\w取反

  \s 匹配空格(包括換行符、制表符、空格符), 相當於[ \t\r\n\v\f]

  \S 相當於\s取反

  \b 匹配單詞邊界

  \B 匹配非單詞邊界,即在詞的內部

6,重復類


 

  模式的匹配次數,使用大括號{ }表示,{n}表示重復n次,{n,}表示至少重復n次,{n,m}表示重復不少於n次,不多於m次。

7,量詞符


 

  量詞符用來設定某個模式出現的次數。

    ?問號表示某個模式出現0次或1次, 等同於{0, 1};

    *  星號表示出現0次或多次,等同於{0, } 

    + 加號表示出現1次或多次, 等同於{1, }

8,貪婪模式


 

  量詞符默認情況下都是最大可能匹配,即匹配到不能匹配為止,這種模式就叫貪婪模式

  /a+/ 表示匹配1個或多個a,那么到底會匹配幾個a呢? 因為默認的是貪婪模式,所以會一直匹配到后面不是a為止。

  如果想將貪婪模式改為非貪婪模式,可以在量詞后面加一個問號。這時候一旦滿足條件,就不再往下匹配了。

  *?表示某個模式出現0次或者多次,采用非貪婪模式

  +?表示模式出現1次或者多次,采用非貪婪模式

9,修飾符


 

    g 表示全局匹配

  i 表示忽略大小寫

  m 表示多行模式。會修改^和$的行為。 加了m修飾符后,^和$會識別換行符( \n )

10, 組匹配

  1,正則中的括號()表示分組匹配,括號中的模式表示分組中的內容。

    在正則表達式內部, 還可以使用 \n 來引用括號匹配的內容, n是從1開始,表示對應順序的括號

    /(.)b(.)\1b\2/.test('abcabc');           \1匹配了第一個括號的a, \2匹配了第二個括號的c

  2,非捕獲組

    (?:x)稱為非捕獲組,表示不返回該組匹配的內容。

  3,先行斷言

    x(?=y)稱為先行斷言。x只有在y前面才匹配,y不計入匹配結果中。

  4,先行否定斷言

    x(?!y) 為先行否定斷言。 x只有不在y前面才匹配。

  

   用通俗的語句來解釋上面的這些:

    x(?! y): x只有不在y前面才匹配

    x(?=a):  表示在a的前面 才匹配。

    x(?<= a): 表示a的后面才匹配

    x(?<! a): 表示需要不匹配某個模式,  與 (?!a)相反

 

 

符加項----- 一些常用的正則: 

  1,郵箱:   /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/                 (餓了么官網input驗證郵箱用的正則, 大廠出品應該沒毛病吧!)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM