问题是,比赛也不能匹配(任何)(任何),只有第一组。
这里是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'));
});发布于 2013-08-01 20:05:24
虽然adeneo将其解析为HTML是正确的,但您也可以通过使重复操作符懒惰和删除全局标志来解决问题。此外,生成的匹配数组中的第一个元素始终是完全表达式匹配。您需要获得第二个元素,以便只获取捕获组的内容。
行变了:
var regex = new RegExp("<template\\s+"+string+">([^;]*?)</template>","i");和
if (val) return val[1]; //null is falsey发布于 2013-08-01 19:59:28
在我看来,几乎像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;FIDDLE
https://stackoverflow.com/questions/18003282
复制相似问题