正则表达式

1、概念

  正则表达式的作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择

2、创建方式

  (1)字面量

    var  reg  =  /cd/

    var  reg  =  /cd/igm

    var  str  =  "abcdefg"

    reg.test(str)  // true

  (2)构造函数

    var  reg  =  new  RegExp("abc")

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

    var  str  =  "abcdef"

    reg.test(str)  // true

3、修饰符

  (1)i

    忽略大小写匹配

  (2)g

    全局匹配

  (3)m

    多方匹配

4、正则方法

  reg.test( str )

  str.match( reg )

5、表达式

  (1)[ ab ]

    每个表达式代表一位,表示匹配a或者b

    [0123456789]:表示匹配0-9范围内的数

    [0-9]:表示匹配0-9范围内的数

    [0-9A-z]:表示匹配0-9、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"]

6、元字符

  (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

    匹配空白字符

    表示[ vf ]

  (6)S

    表示[^s]

  (7)

    表示单词边界

    var  reg  =  /cde/g

    var  str  =  "abc  cde  fcdeh"

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

  (8)B

    表示非单词边界

7、量词

  (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[sS]*d$/g

      var  str  =  "123abc123"

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

8、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)111/g

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

  实例2:

    var  str  =  "aaaabbbb"

    var  reg  =  /(w)111/g

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

  实例3:

    var  str  =  "aabb"

    var  reg  =  /(w)111/g

    str.match(reg)  // null

  实例3:

    var  str  =  "aabb"

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

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

10、可以使用正则表达式的字符串方法

  (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( )

      })

      

11、正向断言

  (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"]

       

  

  

原文地址:https://www.cnblogs.com/cuishuangshuang/p/13301154.html