Java正则表达式IP地址和邮箱匹配

    xiaoxiao2024-12-07  6

    package com.regex; import java.util.Arrays; public class RegexTest { public static void main(String[] args) { /* * 案例一: * "23.2.2.2 192.168.1.1 3.4.56.78" * 要求将这些ip按照顺序进行排序。 * * 思路: * 1,将ip通过空格切割 * 2,对ip进行排序,通过字符串字典顺序排序,这个顺序是错的 * 原因:每个ip有四段,每一段最多三位。应该按照位数比较才是对的 * 所以应该将每一段都补足三位,不满足的用0填充,这样比较字典顺序才是对的 * 怎么补0呢?每一段的位数不同,补0 的个数也不一样。 * 技巧:干脆按照所需的最多的0的个数来补。每一段都补两个0 * 有的地址多了,取每一段的最后三位 */ test1(); /* * 案例二: * 对邮箱地址的校验,只校验格式 */ test2(); } private static void test2() { String mail = "qwer123456df@163.cn.com"; //"\\w+@\\w+(\\.\\w+)+"这是笼统式的校验 String regex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,3}){1,}"; boolean b= mail.matches(regex); System.out.println(mail+":"+b); } public static void test1() { // TODO Auto-generated method stub String ip_str="23.2.2.2 192.168.1.1 3.4.56.78"; ip_str = ip_str.replaceAll("(\\d+)", "00$1"); System.out.println(ip_str); //0023.002.002.002 00192.00168.001.001 003.004.0056.0078 ip_str = ip_str.replaceAll("0*(\\d{3})", "$1"); System.out.println(ip_str); //023.002.002.002 192.168.001.001 003.004.056.078 String[] ips = ip_str.split(" +"); Arrays.sort(ips); for(String ip:ips){ System.out.println(ip.replaceAll("0*(\\d+)", "$1"));//去0 } // String[] ips = ip_str.split(" +"); // Arrays.sort(ips);//直接这样是错的 // for(String ip:ips){ // System.out.println(ip); // } } }
    转载请注明原文地址: https://ju.6miu.com/read-1294348.html
    最新回复(0)