new RegExp / / 正則


正則(RegExp)

定義:正確的規則 它是專門來操作(檢:檢查,索:搜索)(模糊范圍的)字符串的一種規則。 
簡寫: /規則和字符串(不帶引號的字符串)/     /d/ 
標准寫法: new RegExp ( // || 帶引號的字符串 , 修飾符 )

    第一個參數:可以放字符串或者正則,注意:如果是字符串形式的元字符,記得要轉意。

    第二個參數:修飾符

    一般是遇到 變量或者參數 的時候,用標准寫法。

轉義符:  \ 
\ 可以帶任意的符號,只不過有些符號是有特殊含義的

元字符:(普通元字符:在正則當中,字面量方式創建的,兩個斜杠中,除了特殊元字符和量詞元字符以外的字符都叫做普通元字符)

特殊元字符: 
\n 匹配一個換行符 
\r 匹配一個回車符 
\f 匹配一個換頁符 
\t 匹配一個制表符 
\v 匹配一個垂直制表符 
\x 
……. 
\d :匹配0-9之間的任意一個數字 
\D :除了0-9之間的任意字符 
\w :匹配數字、字母、下划線,中的任意一個字符,[0-9a-zA-Z] 
\W :除了數字,字母,下划線以外的任意字符 
\b: 匹配一個邊界 ‘box tag’  (文字是沒有邊界的,比如:你好,中文的感嘆號!。)
\B:除了邊界以外的其他字符 
\s 匹配任何不可見字符,包括空格、制表符、換頁符等等 
\S 匹配任何可見字符 
. 點 匹配除“\n”和”\r”之外的任何單個字符。 
\num 重復子項: \1就代表重復第一個子項(只重復一次)。如果有第二個()子項,那么\2就代表重復第二個子項,以此類推。

量詞元字符:

{} 量詞的范圍

{n,m} 最小是n,最大是m,(n,m都是一個非負整數)
+ 至少一個最多不限 {1,} 最小一次,最多無限
? 最小沒有,最多一次{0,1}
* 最小沒有,最多無限 {0,}
 

修飾符: 
g:  global 全局匹配(找整個字符串) 
i:   ignoreCase=>忽略大小寫 
m: multiline=> 多行匹配 一般是配合\n來使用的 
^:  開頭 
$: 結尾 
[ ]   范圍,任意取其一,范圍是遵循ascll碼走的。例:\w => [0-9a-zA-Z]的范圍 

  中文的范圍:[ \u4e00 - \u9fa5 ]  (記憶:有事100,有酒罰我)

[^]   排除 
()    將( 和 ) 之間的表達式定義為“組”(group),並且將匹配這個表達式的字符保存到一個臨時區域(一個正則表達式中最多可以保存9個),它們可以用 \1 到\9 的符號來引用。 
|      將兩個匹配條件進行邏輯“或”(or)運算。注意:這個元字符不是所有的軟件都支持的。

正則下的方法:

    1. //.test(字符串)  檢驗 
      字符串中有沒有正則能匹配到的內容,返回值: true false
    2. //.exec(字符串)  捕獲 
      方法用於檢索字符串中的正則表達式的匹配。 
      返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。
    3. str.match(//) -> 把匹配到的字符放入到數組中,不匹配返回null
    4. str.replace( " " | / /(要替換誰)," " | callback(替換成什么))
callback 回調函數的特性:每匹配到一次就,調用一次函數
 
●替換字符串默認的callback參數
第一個參數:  匹配到的字符
第二個參數:索引
第三個參數:整個字符串
第四個參數開始往后都是:undefined
 
●如果有() 子項、分組
第一個參數:匹配到的字符
第二個參數之后:對應每一個 子項|分組。
分組或者子項之后是:索引、整個字符串、undefined
 1   //找到字符串中哪個字母出現的次數最多,出現了幾次?
 2   let str = 'dnsasudhusadssasdgsjdgddsjsddhaslfdiusadlhsdsfudahsful';  3     let n = -Infinity; //負無窮大
 4     let name = '';  5     let str2 = str.split('').sort().join('');  6   
 7     str2.replace(/([a-z])\1+/g,function($0,$1){ //$0本次匹配的字符,$1,第一個分組
 8         if(n < $0.length){  9             n = $0.length; 10             name = $1; 11  } 12  }); 13     console.log(n,name);

 

 
正則的特征: 
懶惰: 比如讓找一個數字,它只會找一次,絕對不會找多次 
貪婪: 有多少找多少(盡可能的去檢索)

 


免責聲明!

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



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