仅替换字符串中的第二个数字

Replace only the Second number from a string

如何仅替换字符串中的第二个数字?

实际刺痛: messages_0_items_0_data_0

要求的结果: messages_0_items_1_data_0

var new_index = 1;
this_input.attr('id', this_input.attr('id').replace(/[0-9]+(?!.*[0-9])/, new_index ));

上面的代码改变了最后一个数字而不是第二个数字,如下所示:

不好: messages_0_items_0_data_1

您可以在第 1 组中的第二个数字之前捕获,然后匹配要替换的第二个数字。

^(\D*\d+\D+)\d+

看到一个regex demo

const s = `messages_0_items_0_data_0
messages[0][items][0][data][0]`;
const regex = /^(\D*\d+\D+)\d+/gm;
console.log(s.replace(regex, (m, g1) => `${g1}1`));