You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JavaScript正则表达式以同时解析IP与主机名列表

解决方案

核心思路

不用拆分两次正则,直接用一个正则同时匹配IP地址和对应的主机名,再将匹配结果映射成目标格式的对象,最后组合成JSON数组。

正则表达式说明

使用^([\d.]+)(?:-(\w+))?$匹配每个条目:

  • ([\d.]+):捕获IP地址部分,匹配数字和点的组合
  • (?:-(\w+))?:可选的主机名捕获组,?:表示非捕获分组,?表示该部分可省略,(\w+)捕获主机名(字母数字下划线)

完整JavaScript代码

function convertIpList(ipString) {
  // 拆分每个条目
  const items = ipString.split(',');
  // 匹配IP和主机名的正则
  const ipNodeRegex = /^([\d.]+)(?:-(\w+))?$/;
  
  const result = items.map(item => {
    const match = item.trim().match(ipNodeRegex);
    if (!match) return null; // 处理无效条目,可根据需求调整
    
    const obj = {"{#ADDR}": match[1]};
    // 如果有主机名,添加{#NODE}字段
    if (match[2]) {
      obj["{#NODE}"] = match[2];
    }
    return obj;
  }).filter(item => item !== null); // 过滤无效条目
  
  return JSON.stringify(result);
}

// 测试示例
const testInput = "1.1.1.1-NODE1,2.2.2.2-NODE2,3.3.3.3";
console.log(convertIpList(testInput));
// 输出:[{"{#ADDR}":"1.1.1.1","{#NODE}":"NODE1"},{"{#ADDR}":"2.2.2.2","{#NODE}":"NODE2"},{"{#ADDR}":"3.3.3.3"}]

代码说明

  • 先通过split(',')把输入字符串拆分成单个条目
  • 遍历每个条目,用正则匹配提取IP和主机名
  • 生成对应对象,存在主机名则添加{#NODE}字段
  • 最后用JSON.stringify转换成目标JSON格式,同时过滤无效条目避免出错

内容的提问来源于stack exchange,提问作者UserBulba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:01:16