javascript - 如何只吞掉正则表达式替换第一个匹配项?

标签 javascript gulp gulp-replace

以下是project.json 文件中的内容。我希望替换第一次出现的“版本”值。

{
  "title": "Project Title",
  "copyright": "Copyright Info",
  "description": "Project Description",
  "version": "1.0.0",
  "buildOptions": {
    "xmlDoc": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }
  }
}

下面的代码使用 gulp-regex-replace 将所有出现的版本值更改为 1.0.1。

var targetVersion= "1.0.1";
gulp.task('replace', function () {
    return gulp.src(['./src/**/project.json'])
        .pipe(bom())
        .pipe(replace({ regex: '\\n\\s\\s\\"version\\"\\:\\s\\"([0-9a-zA-Z.-]+)\\"', replace: `${targetVersion}` }))
        .pipe(gulp.dest('./src'));
});

如何使此代码仅替换第一次出现的版本值?

最佳答案

gulp-regex-replace 插件使用全局匹配: https://github.com/mikrofusion/gulp-regex-replace/blob/master/index.js#L31

另一个类似的插件gulp-replace接受自定义正则表达式对象:

replace(/__your_pattern__/, targetVersion);

如果模式中没有 g 修饰符,JS 将只匹配第一次出现的情况。

关于javascript - 如何只吞掉正则表达式替换第一个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965506/

相关文章:

javascript - 使用Vue按秒统计

node.js - VS Task Runner Explorer - Node Sass 找不到绑定(bind)

javascript - 如何使用带有 gulp-replace 的捕获组?

javascript - Windows 8 应用程序是否在符合标准的 JavaScript、HTML5 和 CSS3 上运行?

javascript - 警报后功能不工作

typescript - Browserify + typescript

javascript - `gulp-replace` 仅替换部分目标,但不是全部

javascript - 如何像 Atlassian Jira 一样制作多选、自动完成的组合框

javascript - 同时运行 gulp 和 express