正则表达式验证IP地址是否合法(含java)

本文详细解读了一段Java代码,该代码使用正则表达式检查输入字符串是否符合IPv4地址格式,并确保每段数字在0-255范围内。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式:

^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[0-9])\.((1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.){2}(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$

java方法:


    public static boolean isIp(String ip) {
        //判断IP地址的正则表达式
        String ipRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
        //如果前三项判断都满足,就判断每段数字是否都位于0-255之间
        if (StringUtils.isNotEmpty(ip) && ip.matches(ipRegex)) {
            String[] ipArray = ip.split("\\.");
            for (int i = 0; i < ipArray.length; i++) {
                int number = Integer.parseInt(ipArray[i]);
                //判断每段数字是否都在0-255之间
                if (number < 0 || number > 255) {
                    return false;
                }
            }
            return true;
        } else {//如果与正则表达式不匹配,则返回false
            return false;
        }
    }

### 使用Java正则表达式匹配并替换IP地址Java中,可以利用`replaceAll`方法通过正则表达式实现对字符串中特定模式(如IP地址)的查找与替换操作。以下是具体实现方式: #### 正则表达式说明 用于匹配IPv4地址的标准正则表达式如下: ```regex \b(?:\d{1,3}\.){3}\d{1,3}\b ``` 该正则表达式义为: - `\b`: 单词边界,确保整个IP地址被独立匹配而不与其他字符混淆。 - `(?:...)`: 非捕获组,表示不单独提取这部分内容作为子组。 - `\d{1,3}`: 匹配由1到3位数字组成的部分,对应于每一段IP地址的部分。 - `\.`: 转义后的点号`.`,用于分割IP地址各段。 为了进一步验证每段数值范围是否合法(即介于0至255之间),可扩展正则表达式为更严格的版本[^1]: ```regex \b(?:\d{1,3}\.){3}\d{1,3}\b(?<=^(?!.*(\b(?:\d{1,3}\.){3}\d{1,3}\b).*\1)) ``` 然而,在实际应用中通常采用简化版即可满足需求。 #### 替换逻辑代码示例 下面是一个完整的代码片段展示如何使用正则表达式将字符串中的所有IP地址替换成指定值(例如:"***.***.***.***" 或其他自定义字符串): ```java public class ReplaceIPAddress { public static void main(String[] args) { String input = "lsx[ip:192.168.19.176]的[Physical Memory]...[ip:192.168.19.158]"; // 定义正则表达式匹配 IPv4 地址 String ipPattern = "\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b"; // 将所有 IP 地址替换为 "***.***.***.***" String replacedAll = input.replaceAll(ipPattern, "***.***.***.***"); System.out.println("Replace All IPs:\n" + replacedAll); // 只替换第一个找到的 IP 地址 String replaceFirstOnly = input.replaceFirst(ipPattern, "***.***.***.***"); System.out.println("Replace First IP Only:\n" + replaceFirstOnly); } } ``` 运行以上程序会得到两个不同的输出结果分别代表完全替换以及仅替换首次出现的情况. #### 输出解释 对于输入字符串 `"lsx[ip:192.168.19.176]的[Physical Memory]...[ip:192.168.19.158]"`: - **replaceAll**: 所有符合条件的IP均会被替代成新形式; - **replaceFirst**: 则只处理第一次遇到的有效目标。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值