我的文件较少,内容如下:
@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);
但它没有用。我弄错了什么。
答案 0 :(得分:1)
我认为你的意思是,
> 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;'
答案 1 :(得分:0)
(@imgBack:\s*#)(?:\d+)(.*)$
你可以使用this.Replacement字符串。
$1#ff0000$2
。
参见演示。