哈士奇发布JAVA正则表达式

1、IPv4的正则表达式

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

验证并解释正则表达式

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@SpringBootTest
class DemoXxlJobApplicationTests {

    /**
     * ^ 表示匹配字符串的开头。
     * (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 表示一个数字的范围,可以是 0 到 255 之间的数。
     * 即 25[0-5] 匹配范围在 250 到 255 之间的数字。2[0-4][0-9] 匹配范围在 200 到 249 之间的数字。
     * 第一位数字为 2,第二位数字为 0 到 4,第三位数字为 0 到 9。
     * [01]?[0-9][0-9]? 匹配范围在 0 到 199 之间的数字。第一位数字可以为 0 或 1(可选),第二位和第三位数字可以为 0 到 9。
     * \\. 表示匹配句点(.),需要使用两个反斜杠来转义。
     * {3} 表示前面的表达式重复三次,即匹配三个数字和句点的组合。为啥是{3}而不是{4},因为最后一次没有(.)。
     * (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 表示最后一个数字的范围,与前面的数字范围相同。
     * $ 表示匹配字符串的结尾。
     */

    private static final String IP_PATTERN_4 =
            "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
    private static final Pattern pattern4 = Pattern.compile(IP_PATTERN_4);

    private void checkIP() {
        String ipAddress4 = "42.123.97.36";
        Matcher matcher4 = pattern4.matcher(ipAddress4);
        if (matcher4.matches()) {
            System.err.println("合法IPv4");
        } else {
            System.err.println("非法IPv4");
        }
    }

    @Test
    void contextLoads() {
        checkIP();
    }
}

2、IPv4或6的正则表达式

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

验证并解释正则表达式【这里拿IPv4作对比】

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@SpringBootTest
class DemoXxlJobApplicationTests {

    private static final String IP_PATTERN_4 =
            "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
    private static final Pattern pattern4 = Pattern.compile(IP_PATTERN_4);

    /**
     * ^ 表示匹配字符串的开头。
     * (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3} 表示匹配IPv4地址的前三个数字和句点的组合,重复三次。这部分与之前解释的IPv4正则表达式相同。
     * (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 表示匹配IPv4地址的最后一个数字的范围,与之前解释的IPv4正则表达式相同。
     * \\. 表示匹配句点(.),需要使用两个反斜杠来转义。
     * (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ 表示匹配以IPv4地址结尾的字符串。
     * 或者:
     * ^ 表示匹配字符串的开头。
     * ([0-9a-fA-F]{1,4}:){7} 表示匹配IPv6地址的前七个以冒号(:)分隔的十六进制数字组合,每个数字组合可以包含 1 到 4 位的十六进制数字。
     * [0-9a-fA-F]{1,4} 表示匹配一个十六进制数字组合,可以包含 1 到 4 位的十六进制数字。
     * $ 表示匹配字符串的结尾。
     */
    private static final String IP_PATTERN =
            "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$";

    private static final Pattern pattern4or6 = Pattern.compile(IP_PATTERN);

    private void checkIP() {
        String ipAddress4 = "42.123.97.36";
        Matcher matcher4 = pattern4.matcher(ipAddress4);
        String ipAddress4Or6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
        Matcher matcher4Or6 = pattern4or6.matcher(ipAddress4Or6);
        if (matcher4.matches()) {
            System.err.println("合法IPv4");
        } else {
            System.err.println("非法IPv4");
        }
        if (matcher4Or6.matches()) {
            System.err.println("合法IPv4or6");
        } else {
            System.err.println("非法IPv4or6");
        }
    }

    @Test
    void contextLoads() {
        checkIP();
    }
}

接下来会慢慢更新项目里用过的正则表达式。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值