javascript - 在 gulp 中对正则表达式捕获组进行计算

标签 javascript regex npm gulp gulp-replace

我需要编写一个脚本来将一些代码重组为新的语法,同时还要乘\除一些当前值。

简单描述:

例如我想转:

oldFunction(3, "text");
oldSize = 3;

进入

newfunction("text", 3);
newSize = 6; //notice that this is oldSize*2

我使用 gulp-replace 和 regex 管理替换和重新排序部分,但我不知道如何在 regex 捕获组中乘以数字。

已满:

更详细的例子:

font size = 34px;
text position = {5, 42};

我使用正则表达式和 gulp-replace 将其重组为新语法:

.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, 'createText($2, $3, $1);'))

然后我得到:

createText(5, 42, 34);

一切正常 - 旧数字现在顺序正确!

现在,问题是:我能否在替换之前以某种方式对旧数字进行基本的数学运算(乘法、除法)?

还有。如果有更实用的工具来完成此类任务 - 我会很乐意使用它。

最佳答案

您可以使用常规 anonymous callback method inside .replace能够操纵群体值(value)观。

.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, function($0,$1,$2,$3) { 
    return 'createText(' + $2 + ', ' + $3 + ', ' + $1*2 + ');'; 
 }))

最后一个值将乘以 2。

您应该考虑使用数字匹配模式 ([0-9]+) 而不是类似通配符的 .+ (其中 . 匹配除换行符之外的任何字符)以使此类代码安全运行。

关于javascript - 在 gulp 中对正则表达式捕获组进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43989787/

相关文章:

javascript - jQuery PHP 处理输入数组

javascript - 当我将鼠标焦点放在元素上时,mouseenter 和 mouseleave 会继续触发

javascript - 如何为 Highcharts 中每个系列堆叠的水平条添加页脚?

regex - 提取特殊字符串第一次出现之前的单词

javascript - 乘以正则表达式匹配并将它们替换为字符串

python - 了解条件正则表达式 python 中的 else 路径如何工作

node.js - 由于 node-api@ELIFECYCLE,npm 启动失败

javascript - Bootstrap 'Affix' 不会贴在右边

javascript - 有没有办法获取从 npm 运行的模块中的 package.json 属性?

javascript - WebStorm : Failed to list gulp tasks 中的 Gulp 错误