获取字符串中字符的索引以进行插值

Get indices of characters in string for interpolation

我已经创建了一个方法,给定一个字符串将找到与特定模式相关的所有插值点 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;
},

给定一个字符串,它将检查所有起点和终点 {{ & }} 然后它将 return 一个对象,其中包含每次出现的起点和终点 {{}}.

我这样做的原因是我稍后会 substring() 这些具有相关价值的索引。

没那么简单,但是:

_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 来计算的,因为有两个右大括号。