为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第5天 9-1 全局模式捕获:String.prototype.matchAll()

标签:
JavaScript

课程名称:JavaScript ES(6-11)全版本语法 每个前端都需要的基础课

课程讲师: 谢成

课程内容:
9-1 全局模式捕获:String.prototype.matchAll()

课程收获:

matchAll() 方法返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。正则表达式对象。如果所传参数不是一个正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp。RegExp必须是设置了全局模式g的形式,否则会抛出异常TypeError。一个迭代器(不可重用,结果耗尽需要再次调用方法,获取一个新的迭代器)。

const str = `
    <html>
        <body>
            <div>第一个div</div>
            <p>这是p</p>
            <div>第二个div</div>
            <span>这是span</span>
            <div>第三个div</div>
        </body>
    </html>
`
// exec g
// function selectDiv(regExp, str){
//     let matches = []
//     while(true){
//         // console.log(regExp.lastIndex)
//         const match = regExp.exec(str)
//         // console.log(match)
//         if(match == null){
//             break
//         }
//         matches.push(match[1])
//     }
//     return matches
// }
const regExp = /<div>(.*)<\/div>/g
// const res = selectDiv(regExp, str)
// console.log(res)

// match
// console.log(str.match(regExp))

// replace
// function selectDiv(regExp, str){
//     let matches = []
//     str.replace(regExp, (all, first) => {
//         matches.push(first)
//     })
//     return matches
// }
// const res = selectDiv(regExp, str)
// console.log(res)

// matchAll
function selectDiv(regExp, str){
    let matches = []
    for(let match of str.matchAll(regExp)){
        matches.push(match[1])
    }
    return matches
}
const res = selectDiv(regExp, str)
console.log(res)

谢谢老师,讲的非常细致,很容易懂。这一节学的是全局模式捕获:String.prototype.matchAll(),给以后的学习打下了基础。
原来ES6-11能有这么多种性质,以及对ES6-11有了新的认识,期待后边的学习

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消