gpt4 book ai didi

JavaScript 正则表达式替换多个模式

转载 作者:行者123 更新时间:2023-12-02 18:04:01 25 4
gpt4 key购买 nike

我需要修改正则表达式,它为我执行以下操作。

更改 IP 列表,列表可以更长或更短。

1.1.1.1,2.2.2.2

字符串,例如:

[{"{#ADDR}":"1.1.1.1"},{"{#ADDR}":" 2.2.2.2"}]

在以下行中:

return '{$PING_LIST}'.replace(/([^,]+)/g,'{"{#ADDR}":"$1"}').replace(/(.*)/,'[$1]')

但我还需要将主机名添加到列表中。

1.1.1.1-NODE1,2.2.2.2-NODE2

得到这样的东西

[{"{#ADDR}":"1.1.1.1","{#NODE}":"NODE1"},{"{#ADDR}":"2.2.2.2","{#NODE}":"NODE2"}]

我尝试通过这种方式获取主机名:

(?<=-)(\w+)(?=,)

但我无法找出正确的语法并将其与前面的表达式结合起来。

非常感谢您的帮助!

最佳答案

您想要的结果字符串看起来像带有对象的 Javascript 数组。如果是这种情况,您可以使用 2 个捕获组:

\b((?:\d{1,3}\.){3}\d{1,3})-(\w+)

查看regex demo用于捕获组值。

const s = "1.1.1.1-NODE1,2.2.2.2-NODE2";
const regex = /\b((?:\d{1,3}\.){3}\d{1,3})-(\w+)/g;
const m = Array.from(s.matchAll(regex), m => {
return {
"{#ADDR}": m[1],
"{#NODE}": m[2]
}
})
console.log(m);

关于JavaScript 正则表达式替换多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73723134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com