我创建了一个方法,给定一个字符串将找到相对于某个模式的所有插值点some string {{point}}
这是有效的,但它不是很优雅,我想知道是否有人知道一个更清洁的更加清洁这样做的方式?
这是我的方法:
_interoplationPoints: function(string){
var startReg = /{{/gi,
endReg = /}}/gi,
indices = {start: [],end: []},
match;
while (match = startReg.exec(string)) indices.start.push(match.index);
while (match = endReg.exec(string)) indices.end.push(match.index);
return indices;
},
给定一个字符串,它将检查所有起点和终点{{
& }}
然后它将返回一个对象,其中包含每个{{}}
出现的起点和终点。
我这样做的原因是我稍后substring()
这些索引具有相关价值。
答案 0 :(得分:1)
并不简单,但是:
_interoplationPoints: function(string){
var reg = /{{[^}]*}}/gi,
indices = {start: [],end: []},
match;
while (match = reg.exec(string)) {
indices.start.push(match.index);
indices.end.push(match.index + match[0].length - 2);
}
return indices;
},
此正则表达式匹配{{
后跟任意长度的表达式,该表达式不包含右括号[^}]*
,后跟}}
。结束索引是通过添加匹配的长度(这会使它超出第二个右括号)然后减去2来计算的,因为有两个结束括号。