正则表达式的exec与RegExp.$1

正则表达式的exec、RegExp.$1方法

  1. reg.exec每次匹配完成后,reg.lastIndex被设定为匹配命中的结束位置
  2. reg.exec传入其它语句时,lastIndex不会自动重置为0,需要手动重置
  3. reg.exec匹配结果可以直接从其返回值读取
  4. RegExp.$x保存了最近1次exec或test执行产生的子表达式命中匹配

以双向绑定字符串解析为例:


  const str = '<span>{{var1}}</span><div>{{var2}}</div>'
  const reg = /\{\{(.*?)\}\}/g
  const match = str.match(reg) // 得到['{{var1}}', '{{var2}}']
  const varRes = match.map(item => {
    reg.lastIndex = 0 // exec方法每次使用后会将lastIndex值设为匹配后的index,更换字符串需要手动重置
    reg.exec(item) // [ '{{var1}}', 'var1', index: 0, input: '{{var1}}', groups: undefined ]
    return RegExp.$1 // RegExp.$1用于保存最近一次exec或test产生的匹配结果中,括号内的内容
  })

  console.log(varRes) // ['var1', 'var2']

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容