需要匹配<模板>(任何东西)</模板>

Need to match <template>(anything)</template>

本文关键字:gt lt 模板 任何东      更新时间:2023-09-26

问题出在这里,匹配不能同时匹配(任何东西)(任何东西),只有第一盘。

这是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'));
});

虽然adeneo将其解析为HTML是正确的,但您也可以通过使重复运算符变懒并删除全局标志来解决问题。此外,生成的匹配数组中的第一个元素始终是全表达式匹配。您需要获取第二个元素,以便只获取捕获组的内容。

行已更改:

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

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

在我看来几乎像HTML,那么为什么需要regex呢?

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;

FIDDLE