1. 程式人生 > >2019/1.2/正則的理解

2019/1.2/正則的理解

1.var reg=/./  var reg=/\./

 

前者代表任何一個字元,後者代表這個字元中得有一個

2.?的使用

如果單獨一個字元後面帶? var reg=/\d?/  /n?/

代表一個或0個字元的出現

如果是量詞+和*,{2,}後面帶?取消正則的貪婪性  在捕獲階段

3.捕獲

  1.普通捕獲 exec() macth()

  普通捕獲也有懶惰行,給正則新增一個修飾符g 就可以解決,match 是將所有捕獲的內容放在一個數組並返回。match就是對exec的一個簡單的封裝

  2.分組捕獲 捕獲方法還是exec和match

  正則在結構上發生了變化 ,加()

  var reg=/(a)(b)/

  Exec()和match()在非全域性下分組捕獲是相同的,在捕獲的過程中即捕獲大正則裡的內容也捕獲分組中的內容並都返回

  

  Exec()和match()在全域性下分組捕獲是不一樣的,exec()不變。但是match只捕獲大正則裡的內容

 

 3.分組捕獲的優勢

  A 可以提升優先順序

  B 可以捕獲引用

  \1 代表捕獲1裡面的內容  \2代表分組2裡面的內容

  前提是分組必須在引用前面,如果\2在分組的前面代表普通的表示式???

  分組的結果存在正則類 RegExp的$number屬性下

  \1 和RegExp.$1二者都是分組引用

  \1 只能使用正則表示式裡面,RegExp.$1可以外面使用。都是在捕獲完成的條件下。

  4. 在捕獲的過程中怎樣取消捕獲分組中的內容

  在分組的前面加上?:就ok了

  ?:和?=的區別

  ?:取消捕獲分組中的內容

  ?=  a(?=s)

  

 

  5.replace細說

  replace 是字串的一個方法,他有兩個引數,用後者將前者替換掉,並都返回一個新的字串,但是沒有改變原來的字串。

  1. 如果第一個引數是字串只改變一次

  2. 如果第二個引數是正則,捕獲一次改變一次

  3.如果第二個引數是匿名函式,每捕獲一次這個匿名函式就執行一次,return是什麼,那就替換成什麼,這個匿名函式的arguments有三個元素

 

  作者:晉飛翔

  QQ/微信同步:318080891