繁体   English   中英

需要搭配 <template> (任何东西) </template>

[英]Need to match <template>(anything)</template>

这就是问题所在,匹配项也不能只匹配第一个集合,也不能匹配任何东西。

这是jsFiddle,我在这里很难解决这个问题。

http://jsfiddle.net/UFTR2/

var templates = '<template mini-dash-ytd>'+
                    '<span class="mini-dash-title">{{title}}</span>'+
                    '<span class="mini-dash-metric">{{value}}</span>'+
                '</template>'+
                '<template mini-dash-yesterday>'+
                    '<span class="mini-dash-title">{{title}}</span>'+
                    '<span class="mini-dash-metric">{{value}}<span class="mini-dash-performance-{{performance}}"></span></span>'+
                '</template>';

function templatitFind(string) {
    var regex = new RegExp("<template\\s+"+string+">([^;]*)</template>","ig");
    var val = templates.match(regex);
    if (val !== null) return val[0];
}

$(function () {
    console.log(templatitFind('mini-dash-ytd'));
});

在我看来几乎像HTML,那么为什么需要正则表达式?

var templates = '<template mini-dash-ytd>'+
                  '<span class="mini-dash-title">{{title}}</span>'+
                  '<span class="mini-dash-metric">{{value}}</span>'+
                '</template>'+
                '<template mini-dash-yesterday>'+
                  '<span class="mini-dash-title">{{title}}</span>'+
                  '<span class="mini-dash-metric">{{value}}<span class="mini-dash-performance-{{performance}}"></span></span>'+
                '</template>';

var elems = $('<div />').append(templates);
var first = elems.find('template[mini-dash-ytd]').get(0).outerHTML;

小提琴

尽管adeneo将其解析为HTML是正确的,但您也可以通过使重复运算符变得懒惰并删除全局标志来解决问题。 同样,匹配数组中的第一个元素始终是完整表达式匹配。 您需要获取仅用于获取捕获组内容的第二个元素。

行已更改:

var regex = new RegExp("<template\\s+"+string+">([^;]*?)</template>","i");

if (val) return val[1]; //null is falsey

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM