我有一个类似的字符串,我想只匹配每个{{xxxx}}
模式的第一个'{'
{ {ABCD}}的 { {EFG}}的 { {HIJ}}
{ {ABCD}}的 { {EFG}}的 { {HIJ}}的 {
我尝试使用/(\s|^|.){/g
,但此模式与
{ {ABCD}的} { {EFG}的} { {HIJ}}
有人能引导我朝着正确的方向前进吗?
答案 0 :(得分:1)
您需要使用/(^|[^{]){/g
(匹配并捕获到第1组字符串开头或除{
以外的任何字符,然后匹配{
)并检查是否为组每次RegExp#exec
次迭代时匹配1次。然后,如果组1匹配,则增加匹配索引:
var re = /(^|[^{]){/g;
var str = "{{abcd}}{{efg}}{{hij}}\n{{abcd}}{{efg}}{{hij}}{";
// 0 8 15 23 31 38 45
var m, indices = [];
while ((m = re.exec(str)) !== null) {
indices.push(m.index + (m[1] ? 1 : 0));
}
console.log(indices);