JavaScript 正则表达式多行替换

问题描述 投票:0回答:1

我正在尝试更换这个

@#@ visibility="hidden" @#@
{% include "grid-overlay.njk" %}

@#@ contentPartial="promo/tru-report/"
class="q-promo-container promo--hidden"
expires="2023-04-30T17:00:00Z"@#@
{% include "promo-banner.njk" %}

有了这个

{% set visibility="hidden" %}
{% include "grid-overlay.njk" %}

{% set contentPartial="promo/tru-report/" %}
{% set class="q-promo-container promo--hidden" %}
{% set expires="2023-04-30T17:00:00Z" %}
{% include "promo-banner.njk" %}

我可以使用这个正则表达式找到所有匹配项

regex = /@#@\s*([a-zA-Z0-9-_/\.=:"'\s]+)\s*@#@/gim;

但我不确定如何使用替换功能来获得所需的输出。有什么建议吗?

regex regex-group
1个回答
0
投票

没关系。我通过使用 replacer 函数找到了它。

function replacer(match, p1, offset, string) {
  var variablesArray = p1.split(/"\s+/gi);
  variablesArray = variablesArray.filter(n => n);
  var statements = variablesArray.map(function (statement) {
    return `{% set ${statement}" %}`;
  });
  statements = statements.join("\n");
  return statements;
}

oldContent = newContent;
regex = /@#@\s*([a-zA-Z0-9-_/\.=:"'\s]+)\s*@#@/gim;
newContent = oldContent.replace(regex, replacer);
© www.soinside.com 2019 - 2024. All rights reserved.