阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 正则表达式 方法

      如何学习正则

      可以在浏览器的控制台,通过命令查看

      let reg=/\d+/;
      console.dir(reg);//顺着原型链查找有哪些方法
      console.dir(RegExp.prototype);//正则类的原型
      console.dir(RegExp);
      

      实例方法

      • test 在字符串中检测模式匹配,返回 truefalse
      • exec 该方法是专门为捕获组而设计的
        • 功能:正则捕获的数据,一个数组;
        • 参数:要应用模式匹配的字符串
        • 特性:
          • 使用全局标记 g;持续查找所有匹配项并返回
          • 不使用全局标记 g;始终返回第一个匹配项信息
        • 执行的过程
          • 检测字符串参数,获取正则表达式匹配文本
          • 找到匹配文本则返回一个数组
            • 第 0 个元素:与整个模式匹配的字符串
            • 其他元素:与捕获组匹配的字符串
          • 否则返回 null
        • 派生属性
          • index 匹配项在字符串中的位置
          • input 应用正则表达式的字符串
          • length 返回数组元素的个数
      var text = "cat, bat, sat, fat";
      var pattern1 = /.at/;
      var matches = pattern1.exec(text);
      console.log(matches.index); //0
      console.log(matches[0]); //cat
      console.log(pattern1.lastIndex); //0
      matches = pattern1.exec(text);
      console.log(matches.index); //0
      console.log(matches[0]); //cat
      console.log(pattern1.lastIndex); //0
      
      var pattern2 = /.at/g;
      var matches = pattern2.exec(text);
      console.log(matches.index); //0
      console.log(matches[0]); //cat
      console.log(pattern2.lastIndex); //3
      
      matches = pattern2.exec(text);
      console.log(matches.index); //5
      console.log(matches[0]); //bat
      console.log(pattern2.lastIndex); //8
      

      第一个模式 pattern1 不是全局模式,因此每次调用 exec() 返回的都是第一个匹配项( “cat” )。

      而第二个模式 pattern2 是全局模式,因此每次调用 exec() 都会返回字符串中的下一个匹配项,直至搜索到字符串末尾为止。

      此外,还应该注意模式的 lastIndex 属性的变化情况。

      在全局匹配模式下, lastIndex 的值在每次调用 exec() 后都会增加,而在非全局模式下则始终保持不变。\

      IE 的 JavaScript 实现在 lastIndex 属性上存在偏差,即使在非全局模式下,lastIndex 属性每次也会变化。

      字符串方法

      与正则可以搭配的方法扩展

      • match 找到一个或者多个正则表达式的匹配
      • replace 替换与正则表达式匹配的子串
      • search 检索与正则表达式匹配的值
      • split 把字符串分割为字符串数组

      扩展思考

      看看其他的一些方法,了解都是做什么的。

      目录
      目录