Javascript 在正则表达式中使用正向前瞻忽略末尾是否相等
我有一个正则表达式:Javascript 在正则表达式中使用正向前瞻忽略末尾是否相等,javascript,regex,Javascript,Regex,我有一个正则表达式:(?您可以使用 {{([^{}]+)}}(?:(?!=\s*").)*$ 看 在JavaScript中,这可能是: let str=` {{user.email}}=“找到你了!”; {{user.name}}=“找到你了!”; let secret={{global.test.secret} 让myName={{global.array}}; 让botName={{user.name}}; 让email={{user.email} `; let patter
(?您可以使用
{{([^{}]+)}}(?:(?!=\s*").)*$
看
在JavaScript
中,这可能是:
let str=`
{{user.email}}=“找到你了!”;
{{user.name}}=“找到你了!”;
let secret={{global.test.secret}
让myName={{global.array}};
让botName={{user.name}};
让email={{user.email}
`;
let pattern=/{{([^{}]+)}(?:((?!=\s*))*$/mg;
让m;
做{
m=模式执行(str);
如果(m){
console.log(m[1]);
}
}while(m);
您可以使用
{{([^{}]+)}}(?:(?!=\s*").)*$
看
在JavaScript
中,这可能是:
let str=`
{{user.email}}=“找到你了!”;
{{user.name}}=“找到你了!”;
let secret={{global.test.secret}
让myName={{global.array}};
让botName={{user.name}};
让email={{user.email}
`;
let pattern=/{{([^{}]+)}(?:((?!=\s*))*$/mg;
让m;
做{
m=模式执行(str);
如果(m){
console.log(m[1]);
}
}while(m);
(?)(?我只想要花括号里的东西。@PrinceAl harasis:解决方案正好给了你这个。你是说(?:(?!=\s*)*$
中的双引号是=
?如果是的话,你不能用(?!*=)替换表达式的那部分吗
?OP可能对(?!=\s*=)
感到满意,但这还不清楚。我只想要大括号内的内容。@PrinceAl harasis:解决方案正好给了你这个答案。你是说(?:(?!=\s*)*$
中的双引号是=
?如果是的话,你不能用替换表达式的那部分吗(?!*=)
?OP可能对(?!=\s*=)感到满意
,但这还不清楚。谢谢,在正向前瞻中使用负向前瞻是一个完美的解决方案。我建议您在匹配空格时使用空格字符,而不是\s
。此处\s*
将占用行终止符,导致字符串以“…secret}}\n=”结尾<代码> >不匹配。考虑用<代码>(??*=)<代码>替换<代码> \s*(?!\\s\\])>(或也许<代码>(?!*=* })< /代码>最后,在字符类中,需要转义的字符很少,而且它们不包括“.”或“=”。谢谢,在正先行中使用负先行是一个完美的解决方案。我建议您在匹配空格时使用空格字符,而不是\s
。这里\s*
将占用行终止符,因为唱一个字符串结尾<代码>……秘密} }……不匹配。考虑用<代码>(?!*=)<代码>(或者也许<代码>(?!*=* })< /代码>)替换<>代码> \\代码>(最后,在字符类中很少有字符需要逃避,它们不包括‘.'或‘=’”。