错误::需要一个条件表达式,但看到一个分配。 (const re = /<%([^%>]+)?%>/g;
let match;
while (match = re.exec('<%hello%> you <%!%>')) {
console.log(match);
}
)
while
执行no-cond-assign
循环以重新分配匹配,但出现ScopeNational
错误。我仍然可以获得无错误的输出,但是更正语法的最佳方法是什么?谢谢
答案 0 :(得分:2)
一种选择是改为使用do-while
循环,因此您可以在break
内while(true)
:
const re = /<%([^%>]+)?%>/g;
while (true) {
const match = re.exec('<%hello%> you <%!%>');
if (!match) {
break;
}
console.log(match);
}
IMO,这种情况是Javascript中的 one 时间,其中条件内的赋值比替代条件更清晰。我不会害怕为这一行禁用该掉毛规则。
假设您想检索第一个捕获组,将来,您将可以使用string.prototype.matchAll:
const str = '<%hello%> you <%!%>';
const contentInsidePercents = [...str.matchAll(/<%([^%>]+)?%>/g)]
.map(match => match[1]);
答案 1 :(得分:1)
您可以简单地使用
while ((match = re.exec('<%hello%> you <%!%>'))!== null)
const re = /<%([^%>]+)?%>/g;
let match;
while ((match = re.exec('<%hello%> you <%!%>'))!== null) {
console.log(match);
}