javascript - Node.js:逐行替换文本文件中模式的第二部分

标签 javascript regex node.js

我有一个 less 文件,内容如下:

@background: #345602;
@imgBack: #000;

我可以将整个文本文件读取到一个变量中,然后保存修改文件的变量内容:

var lessStr = grunt.file.read('./myLessFile.less');

现在我想更改变量,例如,将 @imgBack 更改为 #ff0000。因此,修改后的文件将如下所示:

@background: #345602;
@imgBack: #ff0000;

有什么方法可以通过正则表达式匹配和替换来做到这一点吗?请帮忙。

编辑

我的代码如下:

var str = '@black:                 #000;\n@grayDarker:            #222;\n@grayDark:              #333;\n@gray:                  #555;\n@grayLight:             #999;';
var varName = '@black';
var replace = '#ab4564';
var regex = '(' + varName + ':\\s*)(?:#[a-z0-9]+)(.*)$';
var re = new RegExp(regex, 'm');
var replaceStr = '$1' + replace;
str.replace(re, replaceStr);
console.log(str);

但是它不起作用。我是不是搞错了什么。

最佳答案

我想你是这个意思

> var str = "@background: #345602;\n@imgBack: #000;";
> str.replace(/^(@imgBack:\s*#).*$/gm, "$1ff0000;");
'@background: #345602;\n@imgBack: #ff0000;'

更新:

> var str = '@black:                 #000;\n@grayDarker:            #222;\n@grayDark:              #333;\n@gray:                  #555;\n@grayLight:             #999;';
undefined
> var varName = '@black';
> var regex = '(' + varName + ':\\s*)(?:#[a-z0-9]+)(.*)$';
undefined
> var re = new RegExp(regex, 'm');
> var replace = '#ab4564';
undefined
> var replaceStr = "$1" + replace;
undefined
> str.replace(re, replaceStr);
'@black:                 #ab4564\n@grayDarker:            #222;\n@grayDark:              #333;\n@gray:                  #555;\n@grayLight:             #999;'

关于javascript - Node.js:逐行替换文本文件中模式的第二部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866631/

相关文章:

php - 检查字符串是否与模式匹配

MYSQL与REGEX比较

javascript - 无法使用 Node 安装手写笔

node.js - NodeJS v12 重新启用 TLS 1.1 和 1.0

javascript - 如何使用 Node js读取上传到谷歌云存储的JSON文件的内容

javascript - 通过 escape_javascript 在 JavaScript 中转义斜线

javascript - 如何在 leaflet.js 中使用动画 gif 磁贴

javascript - 如何在提交前对 html 元素进行 jQuery 表单验证

javascript - 通过 ajax 请求观察 div 变化

javascript - 突出显示搜索结果字符串大小写问题