1. 程式人生 > >正則的細節

正則的細節

  1.正則:檢驗字串的規則

  2.正則就是有元字元和修飾符構成:(寫在//裡面的都叫元字元)

  元字元分兩種:

    1種是有特殊意義的 例如:/\d/表示數字

    2種沒特殊意義 沒有特殊意義就是字元本身

  3.特殊意義的元字元

    1.\ 轉義字元 轉義後面緊跟的字元的意義

    2. \d 有意義(數字) \.無意義(是什麼就是什麼)

    3.   .  代表除了\n以外的任何單個字元

    4.^以什麼什麼開頭,^讀音:kongchu

    5.$ 以什麼結束, \$就是$本身,n$就是包含$的結尾;

    6.| 代表或的意思;

  4.帶有量詞意思的元字元:

    1.? 代表0到1個;

     *代表0到多個;

     +代表1到多個

    {}系列

  5.[]系列元字元;

    [xyz]  代表x或y或z中的任意一個

    [0-9]  代表0到9之間的任意一個

    [a-z]  代表小寫a到小寫z

    [A-Z]  代表大寫A到大寫Z

    [A-z]  代表大寫A到小寫z(不區分大小寫)

  6.()分組系列:

    (x|y)  x或y中的其中一個;

  正則的細節:(正則定義的區別)

    var reg=/hello/g    (/hello/)代表元字元 不可以用字串拼接

      字面量定義

    var reg=new RegExp("hello","g")   ("hello" 代表字串,可以通過字串拼接)

      物件例項定義

  3.       /./和/\./的區別?

    . 任意字元

    \.就是一個點

  4[.],[+]的意思

    .和+在正則裡面是特殊的元字元;

    . 是任意字元  +是 量詞代表多個

    在[.]和[+]就是這個字元本身沒有意義;

  5.   |代表或

    [2|3]代表2或3;

    [12|34]代表1或2|3或4,或者12或者34  

    往往這種情況需要分組()  (^(12)|(34)$)

  6. -的問題:

    /-/就是本身沒有意義

    如果[0-9]代表 0到9之間的任意一個數字;

    

  正則的案例:

    1.寫一個12到65週歲的正則:

      var reg=/^(1[2-9])|(2-5[0-9])|(6[0-5])/

      var st="13"

      console.log(reg.test(st))

    2.寫一個正常數字的正則;

      var reg=/^[+-]?([0-9]|[1-9]\d+)(\.\d+)?$/

      var st="-20.13"

      console.log(reg.test(st))

    3.寫一個郵箱驗證

      var reg=/^[a-zA-Z](\w|-){5,17}@((136|126).com)|(yeah.net))$/

      var st="[email protected]"

      console.log(reg.test(st))

  總結:正則每寫完一部分就用()包起來     -不是特殊符

  使用定時器的地方先清定時器,防止定時器疊加