Javascript 正则表达式find并替换为gulp/node,并使用find的一部分';替换中的字符串是什么?

Javascript 正则表达式find并替换为gulp/node,并使用find的一部分';替换中的字符串是什么?,javascript,node.js,gulp,Javascript,Node.js,Gulp,我正在执行一个查找并替换为吞咽 我需要在下面找到这个字符串(任何东西都可以是任何东西,而不是“任何东西”的字符串): 并将其替换为: {% block ANYTHING %}{% endblock %} {% block page %}{% endblock %} {% block whatever %}{% endblock %} 示例1. 替换此项: {% id_page %} {% id_whatever %} 为此: {% block ANYTHING %}{% endbloc

我正在执行一个查找并替换为吞咽

我需要在下面找到这个字符串(任何东西都可以是任何东西,而不是“任何东西”的字符串):

并将其替换为:

{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
示例1.

替换此项:

{% id_page %}
{% id_whatever %}
为此:

{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
示例2.

替换此项:

{% id_page %}
{% id_whatever %}
为此:

{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
我找到了我需要找到匹配项的正则表达式。我已经在使用gulp replace来完成一个类似但更简单的任务,所以我开始使用它来完成这个任务,但我不确定如何获取“anywhere”值,以便在替换中使用它

我应该用吞咽法还是淋巴结法

根据文档,您可以使用替换值函数,就像您可以使用

此外,我还修改了您的正则表达式,使用
()
{2,99}
分组在一起。
String.replace()
回调函数将把每个组分解为一个单独的参数。由于您只对提取该组感兴趣,我们可以让
String.replace()
完成所有工作并返回值以替换匹配的文本

const gulp = require('gulp')
const replace = require('gulp-replace');
const path = require('path');
let pattern = new RegExp(/{% id_(.{2,99}) %}/, 'g');

gulp.task('replace', () => {
  return gulp.src('before.html')
    .pipe(replace(pattern, (match, p1) => {
      return `{% block ${p1} %} {% endblock %}`;
    }))
    .pipe(gulp.dest(path.join(__dirname, 'after.html')));
});

应该是这样的:let pattern=newregexp(/{%id_U8;(.{2,99})%}/,'g');事实上是这样的吗?:let pattern=newregexp('{%id_u399;(.{2,99})%}','g')@埃文斯:它们可以互换。如果在表达式周围使用
'
,则不需要在表达式周围使用
/
。但是,当您将
/
传递给RegExp时,可以将其作为实际文本使用。不过要注意的是,如果在表达式周围使用
'
,您仍然需要遵循字符串的转义规则,而使用
/
的文字表示法则不需要担心这一点。