美文网首页
匹配大括号里面的字符串

匹配大括号里面的字符串

作者: skoll | 来源:发表于2022-07-09 20:41 被阅读0次

    正则表达式描述了一种字符串匹配的模式,用来从某个串中取出符合某个条件的子串

    1 .比如从"匹配前面{{name}}匹配后面"中拿到name,并且返回完成的话
    2 .核心,将小的表达式结合起来组成更大的表达式
    3 .const reg=/{{(\w+)}}/

    1 .\w:匹配数字,字母,下划线
    2 .\w+:这个最少要出现1次或多次
    3 .(\w+):标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
    4 .\{:\表示将下一个字符{标记为特殊字符,将会匹配到{,所以\{\{ 会匹配“{{”
    

    4 .所以如果要全部匹配一个长字符串里面的所有{{}}={{}}元素,就要递归操作这个字符串,知道某一个的exec返回的结果是null


    image.png
    function render(template,data){
                const reg=/\{\{(\w+)\}\}/;
                if(reg.test(template)){
                    const name=reg.exec(template)[1]
                    // 这里应该会有n个吧,但是这里一次只能匹配一个
                    template=template.replace(reg,data[name])
                    console.log(template)
                    return render(template,data)
                }
                return template
            }
    
            let template = '我是{{name}},年龄{{age}},性别{{sex}}';
            let person = {
                name: '布兰',
                age: 12,
                sex:'man'
            }
            render(template, person);
    

    5 .难道没有一个函数,返回匹配到的全部数组么?不用递归的版本

    function render(template,data){
                const reg=/\{\{(\w+)\}\}/g;
                const matchs=template.match(reg)
                // 找到所有的匹配
                // 匹配子串的正则
                const regVal=/\{\{(\w+)\}\}/
                for(let k of matchs){
                    let val=k.match(regVal)[1]
                    console.log(val)
                    template=template.replace(regVal,data[val])
                    console.log(template)
                }
                return template
            }
    
            let template = '我是{{name}},年龄{{age}},性别{{sex}}';
            let person = {
                name: '布兰',
                age: 12,
                sex:'man'
            }
            render(template, person);
    

    exec 捕获,把正则表达式中符合的数据拿出来

    1 .返回是一个数组
    2 .0 按照正则匹配出来的内容
    3 .index:找到的这个字符片段是从哪一个索引开始的
    4 .input表示原始字符串
    5 .第一个值是匹配到的元素
    6 .group:不知道是什么意思

    test 匹配,看字符串是否符合规则

    相关文章

      网友评论

          本文标题:匹配大括号里面的字符串

          本文链接:https://www.haomeiwen.com/subject/wuymbrtx.html