正则表达式找出字符串里所有的IP地址并比较与原IP数组内容(JS版本)

1、获取字符串里所有的IP地址(IPV4)

JS代码:

let str = '给你ip地址198.16.92.193,找到我127.0.0.2哈哈哈'

// 正则表达式(找ip地址)
let reg = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/g

let array = str.match(reg);
console.log(array)

运行结果:
在这里插入图片描述

2、比较与原IP数组内容是否相等

// 预期结果
let arr = [ '198.16.92.193', '127.0.0.23' ]

// 实际结果
let str = '给你ip地址,找到我198.16.92.193哈哈哈127.0.0.1,阿尔法127.0.0.23他三分'
// 正则表达式(找ip地址)
let reg = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/g
let array = str.match(reg);

// 调用方法
let result = diffArr(arr,array);
console.log(result)

/**
 * 比较两个数组的值是否相等
 * @param expectedResult 预期结果数组
 * @param actualResult 实际结果数组
 */
function diffArr(expectedResult, actualResult) {
    // 默认实际结果少于预期结果
    let info = '实际结果少于预期结果'
    let outer = expectedResult
    let inner = actualResult
    // 错误结果
    let errList = []
    // 判断长度,长度长的作为外层循环
    // 实际结果多于预期结果
    if (expectedResult.length < actualResult.length){
        info = '实际结果多于预期结果'
        outer = actualResult
        inner = expectedResult
    }

    // 比较两个数组的值
    for (let i = 0; i < outer.length; i++) {
        let flag = false
        for (let j = 0; j < inner.length; j++) {
            if (outer[i] === inner[j]){
                flag = true
                break
            }
        }
        if (!flag){
            errList.push(outer[i])
        }
    }

    // 若数组为空则两个结果集相等
    let result = {
        status: true,
        info: '结果相等',
        errList: []
    }
    if (errList.length > 0){
        result.status = false
        result.info = info
        result.errList = errList
    }
    return result
}

结果:

{ 
	status: false, 
	info: '实际结果多于预期结果', 
	errList: [ '127.0.0.1' ] 
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要使用正则表达式判断一个字符串是否为IP地址,你可以使用Python的re模块和合适的正则表达式。以下是一个示例: ```python import re def is_valid_ip(ip_address): # 定义IP地址正则表达式 ip_regex = r'^((25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|[01]?\d{1,2})$' # 使用正则表达式进行匹配 match = re.match(ip_regex, ip_address) if match: return True # 是有效的IP地址 else: return False # 不是有效的IP地址 # 测试字符串 ip1 = '192.168.0.1' ip2 = '10.0.0.1' ip3 = '172.16.0.1' ip4 = '8.8.8.8' invalid_ip = '256.0.0.1' print(is_valid_ip(ip1)) # 输出:True print(is_valid_ip(ip2)) # 输出:True print(is_valid_ip(ip3)) # 输出:True print(is_valid_ip(ip4)) # 输出:True print(is_valid_ip(invalid_ip)) # 输出:False ``` 在这个示例,我们定义了一个名为`is_valid_ip`的函数,该函数接受一个字符串作为输入,并使用正则表达式来判断该字符串是否符合IP地址的格式。如果匹配成功,则返回True,否则返回False。 正则表达式`^((25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|[01]?\d{1,2})$`用于匹配合法的IP地址格式。它可以匹配四个由点分隔的数字段,每个数字段的取值范围是0到255。如果字符串符合这个正则表达式,则被判断为有效的IP地址。 在上面的示例,我们测试了几个字符串,其前四个是有效的IP地址,最后一个是无效的IP地址。根据正则表达式的匹配结果,输出结果表明前四个字符串被判断为有效的IP地址,最后一个字符串被判断为无效的IP地址

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Main12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值