正则表达式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: 调用该方法的字符串

 
原文地址:https://www.cnblogs.com/huiminxu/p/9437952.html