diff --git a/packages/runtime/interpolate.js b/packages/runtime/interpolate.js index 50ce48f..2724175 100644 --- a/packages/runtime/interpolate.js +++ b/packages/runtime/interpolate.js @@ -105,6 +105,10 @@ function forEachInterpolatedVars(str, replacer, options = {}) { let opts = Object.assign({replaceAll: true },options); varWithPipeRegexp.lastIndex = 0; while ((matched = varWithPipeRegexp.exec(result)) !== null) { + // 这对于避免零宽度匹配的无限循环是必要的 + if (matched.index === varWithPipeRegexp.lastIndex) { + varWithPipeRegexp.lastIndex++; + } const varname = matched[1] || ""; // 解析格式化器和参数 = [,[,[,,...]]] const formatters = parseFormatters(matched[2] || "");