正則表達式

一、概念正則表達式

  正則表達式的做用:匹配特殊字符或有特殊搭配原則的字符的最佳選擇函數

二、建立方式spa

  (1)字面量3d

    var  reg  =  /cd/索引

    var  reg  =  /cd/igm字符串

    var  str  =  "abcdefg"it

    reg.test(str)  // trueio

  (2)構造函數ast

    var  reg  =  new  RegExp("abc")function

    var  reg  =  new  RegExp("abc", "igm")

    var  str  =  "abcdef"

    reg.test(str)  // true

三、修飾符

  (1)i

    忽略大小寫匹配

  (2)g

    全局匹配

  (3)m

    多方匹配

四、正則方法

  reg.test( str )

  str.match( reg )

五、表達式

  (1)[ ab ]

    每一個表達式表明一位,表示匹配a或者b

    [0123456789]:表示匹配0-9範圍內的數

    [0-9]:表示匹配0-9範圍內的數

    [0-9A-z]:表示匹配0-九、A-Z、a-z範圍內的值

    實例1:

      var  reg  =  /[0123456789][0123456789][0123456789]/g

      var  str  =  "3245fdk4590dfkl823567dfjhk"

      str.match(reg)  // ["324", "459", "823", "567"]

 

    實例2:

      var  reg  =  / [ab][cd][d]/g

      var  str  =  "abcd"

      str.match(reg)  // ["bcd"]

  (2)[ ^ab ]

    表示不能匹配a和b,其它均可以匹配

    實例1:

      var  reg  =  /[^ab]/g

      var  str  =  "acde"

      str.match(reg)  // ["c", "d", "e"]

    實例2:

      var  reg  =  /[^ab][^ab]/g

      var  str  =  "acde"

      str.match(reg)  // ["cd"]

  (3)( )

    實例1:

      var  reg  =  /(abc | bcd)/g

      var  str  =  "abcdefbcdf"

      str.match(reg)  // ["abc", "bcd"]

    實例2:

      var  reg  =  /(abc | bcd)[0-9]/g

      var  str  =  "bcd53dfs"

      str.match(reg)  // ["bcd5"]

六、元字符

  (1)\w

    \w表示區間是[0-9A-z_]

    實例1:

      var  reg  =  /\wab5/

      var  str  =  "tyab5"

      str.match(reg)  // ["yab5"] 

  (2)\W

    表示[^\w]

    實例2:

      var  reg  =  /\Wab5/

      var  str  =  "t*ab5"

      str.match(reg)  // ["*ab5"]

  (3)\d

    表示[0-9]

  (4)\D

    表示[^0-9]

  (5)\s

    匹配空白字符

    表示[\t\n\r\v\f ]

  (6)\S

    表示[^\s]

  (7)\b

    表示單詞邊界

    var  reg  =  /\bcde/g

    var  str  =  "abc  cde  fcdeh"

    str.match(reg)  // ["cde"]

  (8)\B

    表示非單詞邊界

七、量詞

  (1)n+

    表示n能夠出現1次或屢次

  (2)n*

    表示n能夠出現0次或屢次

    實例1:

      var  reg  =  /\w+/g

      var  str  =  "abc"

      str.match(reg)  // ["abc"]

  (3)n?

    表示n能夠出現0次或1次

     實例1:

      var  reg  =  /\w?/g

      var  str  =  "aaa"

      str.match(reg)  // ["a", "a", "a", ""]

  (4)n{x}

    表示一次匹配x個n

    實例1:

      var  reg  =  /\w{3}/g

      var  str  =  "abcedfg"

      str.match(reg)  // ["abc", "edf"]

  (5)n{x, y}

    表示一次匹配y個n,後面不夠的最少能夠匹配x個n

    y值能夠不寫,表示x到正無窮

    實例1:

      var  reg  =  /\w{3,5}/g

      var  str  =  "ackdeewjkttld"

      str.match(reg)  // ["ackde", "ewjkt", "tld"]

   (6)^和$

    ^n:表示匹配以n開頭的

    n$:表示匹配以n結束的

    實例1:

      var  reg  =  /ed$/g

      var  str  =  "abedced"

      str.match(reg)  // ["ed"]

    實例2:

      var  reg  =  /^abc$/g  // 表示以同一個abc開始和結束

      var  str  =  "abcabc"

      str.match(reg)  // null

    實例3:

      var  reg  =  /^\d[\s\S]*\d$/g

      var  str  =  "123abc123"

      str.match(reg)  // ["123abc123"]

八、reg.exec(str)

  var  reg  =  /ab/g

  var  str =  "ababab"

  reg.lastIndex  // 0

  reg.exec(str)  // ["ab"]

 

  reg.lastIndex  // 2

 

  reg.exec(str)  // ["ab"]

  reg.lastIndex  // 4

  reg.exec(str)  // ["ab"]

  reg.lastIndex  // 6

  reg.exec(str)  // null

 

 

  reg.lastIndex  // 0

 

  reg.exec(str)  // ["ab"]

(9)反向匹配

  實例1:

    var  str  =  "aaaa"

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

    str.match(reg)  // ["aaaa"]

  實例2:

    var  str  =  "aaaabbbb"

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

    str.match(reg)  // ["aaaa", "bbbb"]

  實例3:

    var  str  =  "aabb"

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

    str.match(reg)  // null

  實例3:

    var  str  =  "aabb"

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

    str.match(reg)  // ["aabb"]

十、可使用正則表達式的字符串方法

  (1)str.search( reg )

    匹配到字符返回字符索引,匹配不到返回-1

  (2)str.split(reg)

  (3)str.replace(reg)

 

    實例1:

      var  str  =  "ab"

      str.replace("a", "b")  // ba

 

    實例2:

      var  reg  =  /a/

      var  str  =  "aa"

      str.replace(reg, "b")  // ba 

 

    實例3:將aa變成bb

      var  reg  =  /a/g

      var  str  =  "aa"

      str.replace(reg, "b")  // bb

 

    實例4:將aabb變成bbaa

      var  str  =  "aabb"

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

      str.replace(reg, "$2$2$1$1")  // bbaa

      等同

      str.replace(reg, function($, $1, $2){

        retrun $2 + $2 + $1 + $1

      })

 

    實例5:將"the-first-name"變成"theFirstName"

      var  reg  =  /-(\w)/g

      var  str  =  "the-first-name"

      str.replace(reg, function($, $1){

        return  $1.toUpperCase( )

      })

      

十一、正向斷言

  (1)?=n

    實例1:

      var  str  =  "abaaaa"

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

      str.match(reg)  // ["a"]

 

    實例2:

      var  str  =  "abaaaa"

      var  reg  =  /a(?!b)/g

      str.match(reg)  // ["a", "a", "a", "a"]

 

    實例3:

      var  str  =  "aaa"

      var  reg  =  /a+/g

      str.match(reg)  // ["aaa"]

 

    實例4:

      var  str  =  "aaa"

      var  reg  =  /a+?/g

      str.match(reg)  // ["a", "a", "a"]

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息