我有一个字符串:
$('#menu-link').click(function(){
var menuActive = $('#menu-link').data('active');
if(menuActive) {
$('#menu-link').toggleClass('slideOut');
$('nav').toggleClass('slideOut');
$('#menu-link').removeClass('active');
} else {
$('#menu-link').toggleClass('slideIn');
$('nav').toggleClass('slideIn');
$('#menu-link').data('active', true);
}
});
这是我目前的正则表达式模式:
string = "{{1:123}} asdfadfasdfdfdfsaf {{1212:}}"
当使用匹配时,我得到:
var pattern = /[{{].*[}}]/;
如何获得第一个支架块,或者更好的是,得到一个包含每个支架块的数组?我理想的回归结果是:
string.match(pattern)
//returns ["{{1:123}} asdfadfasdfdfdfsaf {{1212:}}"]
答案 0 :(得分:2)
您需要删除方括号并使用延迟量词:
var pattern = /{{.*?}}/g;
请参阅demo
[{{]
只匹配一个{
,因为它是一个字符类。与[}}]
相同,它与1 }
匹配。详细了解character classes。
.*
匹配尽可能多的换行符之外的任何字符,如果您使用它,您将获得从第一个{{
到最后}}
的子字符串。延迟量词将与第一个}}
匹配。另请参阅What do lazy and greedy mean in the context of regular expressions,尤其是Lazy Quantifier Solution。
var re = /{{.*?}}/g;
var str = '{{1:123}} asdfadfasdfdfdfsaf {{1212:}}';
console.log(str.match(re));