node.js - 如何操作正则表达式命名的捕获组

标签 node.js

我正在尝试使用捕获组来替换数据本身,并对其中的数字进行操作。这是要处理的文本:

firstGroup1
firstGroup33

我的目标是用自身+1替换任意数量的组以获得,例如:

firstGroup2
firstGroup34

当前这是显示两个不同捕获组的代码:

data = data.replace(/(firstGroup)([1])/gms, '$1 $2')

为了理解这个问题,这是一次失败的尝试:

data = data.replace(/(firstGroup)([1])/gms, '$1' + $2+1

如何在nodeJS javascript中执行这个数字加法?谢谢!

示例 2:

文字:

.method public constructor <init>()V
    .locals 2

失败的代码:

data = data.replace(/(constructor \<init\>[(][)]V.............)(..)/gms, (_, first, num) => first + (Number(num) + 1));

最佳答案

这里没有任何命名捕获组,只有普通捕获组 - 使用替换函数替换第一个捕获组,并与第二个捕获组连接并转换为数字加 1 :

const data = `firstGroup1
firstGroup33`;

const result = data.replace(
  /(firstGroup)(\d+)/g,
  (_, first, num) => first + (Number(num) + 1)
);
console.log(result);

因为您没有使用 . 来匹配模式中任何位置的空格,所以不需要 s 修饰符,也没有使用 ^$,因此也不需要 m 修饰符。

(命名的捕获组看起来像:

const str = 'foo bar';
const match = str.match(/foo (?<whatComesAfterFoo>\S+)/);
console.log(match.groups.whatComesAfterFoo);

)

关于node.js - 如何操作正则表达式命名的捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56419883/

相关文章:

javascript - 使用react-native通过TCP Socket发送mp3文件

javascript - Node MySQL—— promise 永无止境

node.js - Node Js 如何开始

javascript - node.js 和 JS 框架可以开箱即用地使用 ES6 吗?

node.js - 如何在 Node pg 中设置 postgres 数据库和表

node.js - sequelize中如何设置复杂的join条件?

javascript - 在 Node 中每天中午 12 点仅安排一次作业

javascript - Mongoose :如何替换子文档数组?

javascript - 如何在 javascript selenium 中检查复选框并获取复选框是否被选中

javascript - 发布到本地 API 时无法读取未定义的属性 'id'