zoukankan      html  css  js  c++  java
  • 正则表达式

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

           

      

      

  • 相关阅读:
    算法思想杂谈【原创】
    OpenGL坐标变换专题
    XSS的原理分析与解剖:第三章(技巧篇)【转】
    php实现字符串翻转
    (基础) --- php session原理和多台服务器session共享问题
    (基础) --- php get和post的区别
    (基础)--- PHP单引号和双引号区别
    MySQL主从复制原理解析
    详解MYSQL各种优化原理
    mysql索引详解
  • 原文地址:https://www.cnblogs.com/cuishuangshuang/p/13301154.html
Copyright © 2011-2022 走看看