我有以下代码块:
var field,
reg = new RegExp('{{.*?}}', 'i'),
text = 'This is a string with 1: {{param1}}, 2: {{param2}} and 3: {{param3}} parameters.';
while (field = reg.exec(text)) {
console.log(field);
}
如果我包含一个全局标志
g
,循环就会正常运行。但是,如果它不是全局的,那么当第一次匹配后reg.exec(text);
应该返回null
并结束while
循环,对此我想理解其原因,如果有人能详细说明,我将非常感激。
{
和}
会发生什么? - npinti()
)? - XlanderRegExp.prototype.exec()
"注意:不要将正则表达式字面量(或 RegExp 构造函数)放在 while 条件中,否则如果有匹配项,则由于 lastIndex 属性在每次迭代时被重置,它将创建一个无限循环。还要确保设置了全局标志,否则这里也会发生循环。" - Andreas