1. 程式人生 > >Web--js高階--12月18日隨筆

Web--js高階--12月18日隨筆

一:

  正則:RegExp

  概念:用來檢驗字串的規則

  如何使用:  Var  reg=/ /      var   reg=new  RegExp()最後的本質都是一個例項物件。

  方法:

     test()匹配的方法                   exec()捕獲的方法

二:修飾符:

     i (忽略大小寫)    m()代表多行匹配       g()代表全域性匹配

三:正則的方括號:

    【abc】 代表查詢方括號中的任何字元

    【^abc】代表查詢任何一個不在方括號之間的字元

    【0-9】查詢0到9之間的數字

    【a-z】查詢任何小寫a到小寫z的字元

    【A-Z】查詢任何大寫A到大寫Z的字元

    (red|blue|green)

  元字元:

    .代表單個字元

    \w 代表單詞字元(數字,字母,下劃線)

    \W代表非單詞字元

    \d代表數字

    \D代表非數字

    \s代表空白字元

    \S代表非空白字元

    \b代表單詞邊界

    \B代表非單詞邊界

  量詞:

    1. n+代表至少1個n的字元

    2.n*代表0個或多個n

    3.n?包含0個或1個n

    4.N{X},包含x個n  

    5. N{x,} 包含至少x個nN{x,y}

       6.N{x,y}包含大於等於x個小於等於y個n

       7.N$  包含以n結尾的字串^n包含以n開頭的字串

    8.^n包含以n開頭的字串

       9.?=n 指定字串後面緊跟的n的字串

四:正則的理解 

    (1)  正則的懶惰性

        每一次在exec()中捕獲的時候,只捕獲一次匹配的內容,而不往下捕獲了。我們把這叫正則的懶惰性,每一次捕獲的開始位置都是從0開始

    var reg/\d+/;

    var st="hu1314miao521"

    console.log(reg.exec(st))

     解決正則的懶惰性:

             加修飾符g(全域性匹配)

    (2).正則的貪婪性:每一次匹配都是按照最長的出結果,我們把這種功能叫正則的貪婪性。

       var  reg=/\d+/;

       var st=“hello2345”

       console.log(reg.exec(st))

(3)正則的例項物件reg上有一個lastindex的屬性   他是正則捕獲的起始位置

  var reg=/\d+/;

  var st=“miao0110”

  console.log(reg.exec(st))

在元字元量詞後面加?

  var reg=/\d+?/g;

  var st="hu01101201"

  console.log(st.match(reg))

 

五:while語句:

  var i=12;                  var  n=12;

  var sum=null              var  sun=null

  while(i<10){            do{sun=sun+n   n++;}

    sum=sum+i            while(n<11);

   }                    console.log(sun)先執行,後判斷

console.log(sum)先判斷後執行 

六:分組捕獲    正則帶()在陣列的個數是從左往右

var reg=/(a)(b)/就相當於大正則裡面帶了兩個小正則

第一組是(a)第二組是(b)

分組捕獲的作用

    1.改變優先順序

    2.分組引用   \1,\2

 \2代表和第二個分組出現一模一樣的內容,\1代表和第一個分組出現一模一樣的內容

    var  reg=/(\w)\1(\w)\2/

 var   st=“ssdd”

  var  s=reg.test(st)

  console.log(s)

         Reg  中的規則是第一個是一個分組,且是一個單詞字元   第二個是個分組引用要求和第一組一模一樣,第三個是第二個分組,且是一個單詞字元,第四個是一個分組引用,要求和第二組一模一樣。

3.分組捕獲

    分組的捕獲前提是正則存在分組,不僅把大正則的內容捕獲到,把小正則的內容也捕獲到。

var reg=/(a)(?:b)/

var st=“acsd”

console.log(reg.exec(st))