飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • JAVASCRIPT

    • JavaScript
    • 语句和表达式
    • 数组空位
    • 无法访问 undefined、null 的属性
    • currying
    • 装饰器 Decorator
    • ES6 的简单使用
    • Error 类型
    • 事件队列
    • 隐式转换
    • 调用表达式
    • 函数调用
    • 运算符优先级
    • 原型链
    • 正则 exec
      • 语法
        • 1. 示例
        • 2. 返回值
    • 作用域与闭包
    • 一步步启用 babel7
    • 什么是 this
    • typeof
    • 全局属性 undefined
    • 自增/减

正则 exec

exec 方法在一个指定字符串中执行一个搜索匹配,返回一个结果数据或 null。

在设置了 global 或 sticky 标志位的情况下(如 /foo/g 或 /foo/y),Regex 对象是有状态的。他们会将上次成功匹配后的位置记录在 lastIndex 属性中。使用此特性,exec 可用来对单个字符串中的多次匹配结果进行逐条的遍历(包括捕获到的匹配),而相比之下,String.prototype.match 只会返回匹配到的结果。

稍微测试下大概会保留 10s+。

语法

1. 示例

const reg = /foo*/g;
const str1 = "table football, foosball";
let arr;

while (arr = reg.exec(str1)) {
  console.log(`Found ${arr[0]}. Next starts at ${reg.lastIndex}.`);
}

// "Found foo. Next starts at 9."
// "Found foo. Next starts at 19."

2. 返回值

如果匹配成功,则返回一个数组,并更新正则对象的 lastIndex 属性。

如果匹配失败,exec 方法返回 null,并将 lastIndex 重置为 0。

被提到这么多次的 lastIndex 是什么?它是下一次匹配开始的位置。这就是匹配到 null 的原因。

编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
原型链
Next
作用域与闭包