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

        https://blog.csdn.net/qq_31631167/article/details/81029712

    1,正则表达式实例方式  

           字面量

              var reg=/   /

             var   reg=/    /gi

          构造函数

             var reg = new RegExp('   ','g')      修饰符:     g 全局搜索            i  忽略大小写              m  多行

    2.入门案例

           ^([  ]{2,3})+@

             ^开始        ()组  $1 

            +一个或多个 

            d 数字   d? 0或1 

           d+ 一或多   d{3} 3次

           d* 0或者任意   单词边界

           .  任意字符  

            .   表示符号.

            /  表示符号 /

    元字符:

          * 0 多

          +  1 多

          ? 0 1

          $ 结尾

          ^ 开始

    类 [ABZ]    A或者B 或者Z

        [A-Z]  A或者B...Z       [A-Za-z0-9]

               ‘ - ’ 在两数字之间表示范围不然就表示‘ - ’本身

       [^a-z] 不是a-z的   ‘^’ 出现在[]里面表示非 否则表示开始

    预定义类: . 所有字符

                   s 空白字符

                   d 数字

                   w  单词字符(字母 数字 下划线) 

                    单词边界

                  B 非单词边界

    量词

                  ? 0 1

                  * 0 多

                 + 1  多

                 {n}  n次

                {n,m}  n到m次  包含n m   (全部符合,以高的匹配)

                {n,m}?   尽可能以低的匹配

                {n,}   至少n次

                {0,m} 至多m次

    分组()

            /(Byron) {3}/   匹配Byron出现3次的

           /Byr(on |ca)Sa/  匹配出现 ByronSa  或者 ByrcaSa的

    反向引用

            eg:   2012-12-25   --> 12/25/2015

                        '2012-12-25'.replace(/(d{4})-(d{2})-(d{2})/, '$2/$3/$1')

              忽略分组的概念: (?:)  在分组里的开始输入  ?:来忽略组的概念

    前瞻:

          正向前瞻 exp(?=assert)  eg :  w(?=d)

          负向前瞻   exp(? ! assert)   eg:    w(?!d)

                      js从文本头向尾部解析,文本尾部叫做”前” 

                               ‘this is a apple’将is替换为A

                           'this is a apple'.replace(/is(?=sa)/g,'A'); 
                                             //输出"this A a apple"

    正则表达式的属性: global ignoreCase multiline lastIndex source(正则文本)

    正则方法: RegExp.prototype.test(str) 结果返回true 或false
             RegExp.prototype.exec(str)   如果未找到返回null  找到返回数组(包含  index:匹配文本的位置   input:应用正则表达式的字符串)
              ****全局查找时   lastIndex 表示 当前匹配结果的最后一个字符的下一个字符位置   非全局查找 lastIndex 无效


    字符串对象方法: String.prototype.search(reg)  会忽略全局 找到返回第一个找到的index 找不到返回-1
                    String.prototype.match(reg)    不忽略全局 咋不到返回null 找到返回数组
                    String.prototype.split(reg)   
    String.prototype.replace('','') 第一个参数可以写 reg 第二个参数可以是函数

                  function replacer(match, p1, p2, p3, offset, string) {
                          // p1 is nondigits, p2 digits, and p3 non-alphanumerics
                    return [p1, p2, p3].join(' - ');
                  }
                  var newString = 'abc12345#$*%'.replace(/([^d]*)(d*)([^w]*)/, replacer);
               match: 匹配的字符串
    p1 p2 p3 组
    offest: 所匹配字符串在原字符串的index
    string: 调用该方法的字符串

     
  • 相关阅读:
    141. 环形链表
    15. 三数之和
    剑指 Offer 59
    177. 第N高的薪水
    176. 第二高的薪水
    175. 组合两个表
    剑指 Offer 57
    剑指 Offer 56
    110. 平衡二叉树
    置顶
  • 原文地址:https://www.cnblogs.com/huiminxu/p/9437952.html
Copyright © 2011-2022 走看看