我需要修改正則運算式,它為我執行以下操作。
更改 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 )(?=,)
但我無法找出正確的語法并將其與前面的運算式結合起來。
非常感謝任何幫助!
uj5u.com熱心網友回復:
您想要的結果字串看起來像一個帶有物件的 Javascript 陣列。如果是這種情況,您可以使用 2 個捕獲組:
\b((?:\d{1,3}\.){3}\d{1,3})-(\w )
有關捕獲組值,請參閱正則運算式演示。
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);
uj5u.com熱心網友回復:
用于((?:\d \.){3}\d )匹配IP。
let pinglist = '1.1.1.1-NODE1,2.2.2.2-NODE2';
let result = pinglist.replace(/((?:\d \.){3}\d )-([^,] )/g, '{"{#ADDR}":"$1","{#NODE}":"$2"}')
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508172.html
標籤:javascript 正则表达式
