public class RegexUtils {
	public static final String Email = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+([a-zA-Z]{2,6}|中国|公司|网络)$";
	public static final String Phone = "^1[34578]\\d{9}$";
	public static final String Tel = "^0[1-9](\\d{1,2}\\-?)\\d{7,8}";
	public static final String Url = "(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^]\\s`!()\\[{};:'\".,<>?«»“”‘’]))";
	public static final String Domain = "^http://(?!\\-)(?:[a-zA-Z\\d\\-]{0,62}[a-zA-Z\\d]\\.){1,126}(?!\\d+)[a-zA-Z\\d]{1,63}$";
	public static final String ImgUrl = "(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^]\\s`!()\\[{};:'\".,<>?«»“”‘’]))[.](jpg|jpeg|png|gif|bmp)";
	public static final String Number = "^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$";
	public static final String Chinese = "[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+";
	public static final String PostCode = "^(\\d|\\d{2})\\d4$";
	public static final String IdNo = "((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}[X0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))";
	public static final String Ip = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$|^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$";
	public static final String ShortDate = "^\\d{4}[\\-](0?[1-9]|1[012])[\\-](0?[1-9]|[12][0-9]|3[01])$";
	public static final String LongDate = "^\\d{4}[\\-](0?[1-9]|1[012])[\\-](0?[1-9]|[12][0-9]|3[01]) (?:2[0-3]|[01]?[0-9]):[0-5][0-9]:[0-5][0-9]$";
	public static final String QQ = "^[1-9][0-9]{4,9}$";
	public static final String Letter = "^[A-Za-z]+$";
	public static final String CapitalLetter = "^[A-Z]+$";
	public static final String LowerCaseLetter = "^[a-z]+$";
	public static final String LetterDigit = "^[0-9A-Za-z]+$";
	public static final String Color = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$";
	
	public static final String URL_IMAGE = "^(http://)?([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?(.JPEG|.jpeg|.JPG|.jpg|.GIF|.gif|.BMP|.bmp|.PNG|.png)$";
	
	public static boolean matchEmail(String value) {
		return match(RegexUtils.Email, value);
	}
	
	/**
     * 1 移动号段:135、136、137、138、139、147、150、151、152、157、158、159、182、183、184、187、188。
     * 2 联通号段:130、131、132、145、155、156、185、186、170
     * 3 电信号段:133 153 180 181 189 177
     */
    public static boolean matchPhone(String value) {
        return match(RegexUtils.Phone, value);
    }

    public static boolean matchTel(String value) {
        return match(RegexUtils.Tel, value);
    }

    public static boolean matchUrl(String value) {
        return match(RegexUtils.Url, value);
    }

    public static boolean matchDomain(String value) {
        return match(RegexUtils.Domain, value);
    }

    public static boolean matchImageUrl(String value) {
        return match(RegexUtils.ImgUrl, value);
    }

    public static boolean matchNumber(String value) {
        return match(RegexUtils.Number, value);
    }

    public static boolean matchChinese(String value) {
        return match(RegexUtils.Chinese, value);
    }

    //    第一位数字索引
    //    包含地区名称和邮编,按开头的第一位数字分:
    //            0、1、2、3、4、5、6、7、8、9。
    //
    //
    //    前两位数字索引
    //    按开头的前两位数字分:
    //            00、01、02、03、04、05、06、07、08、09
    //            10、11、12、13、14、15、16、17、18、19
    //            20、21、22、23、24、25、26、27、28、29
    //            30、31、32、33、34、35、36、37、38、39
    //            40、41、42、43、44、45、46、47、48、49
    //            50、51、52、53、54、55、56、57、58、59
    //            60、61、62、63、64、65、66、67、68、69
    //            70、71、72、73、74、75、76、77、78、79
    //            80、81、82、83、84、85、86、87、88、89
    //            90、91、92、93、94、95、96、97、98、99
    public static boolean matchPostCode(String value) {
        return match(RegexUtils.PostCode, value);
    }


    public static boolean matchIdNo(String value) {
        return match(RegexUtils.IdNo, value);
    }

    //    类别	1st八位字节十进制范围	1st 八位字节高阶位	网络/主机ID (N=网络, H=主机)	默认子网掩码	网络数量	每个网络的主机(可用地址)
    //    A	1 – 126*	0	N.H.H.H	255.0.0.0	126 (27 – 2)	16,777,214 (224 – 2)
    //    B	128 – 191	10	N.N.H.H	255.255.0.0	16,382 (214 – 2)	65,534 (216 – 2)
    //    C	192 – 223	110	N.N.N.H	255.255.255.0	2,097,150 (221 – 2)	254 (28 – 2)
    //    D	224 – 239	1110	为多播预留
    //    E	240 – 254	1111	实验性的,用于研究
    //    注意:A类IP地址中127.0.0.0 至 127.255.255.255 不能被使用,它们预留用于环回地址和诊断功能。
    //
    //    私有网络地址
    //
    //    类别	私有网络	子网掩码	地址范围
    //    A	10.0.0.0	255.0.0.0	10.0.0.0 - 10.255.255.255
    //    B	172.16.0.0 - 172.31.0.0	255.240.0.0	172.16.0.0 - 172.31.255.255
    //    C	192.168.0.0	255.255.0.0	192.168.0.0 - 192.168.255.255
    public static boolean matchIp(String value) {
        return match(RegexUtils.Ip, value);
    }

    public static boolean matchShortDate(String value) {
        return match(RegexUtils.ShortDate, value);
    }

    public static boolean matchLongDate(String value) {
        return match(RegexUtils.LongDate, value);
    }

    public static boolean matchQQ(String value) {
        return match(RegexUtils.QQ, value);
    }

    public static boolean matchLetter(String value) {
        return match(RegexUtils.Letter, value);
    }

    public static boolean matchCapitalLetter(String value) {
        return match(RegexUtils.CapitalLetter, value);
    }

    public static boolean matchLowerCaseLetter(String value) {
        return match(RegexUtils.LowerCaseLetter, value);
    }

    public static boolean matchLetterDigit(String value) {
        return match(RegexUtils.LetterDigit, value);
    }

    public static boolean matchColor(String value) {
        return match(RegexUtils.Color, value);
    }

    public static boolean match(String regex, String value) {
        if (StringUtils.isEmpty(value)) {
            return false;
        }

        Pattern pattern = Pattern.compile(regex);
        return pattern.matcher(value).matches();
    }

    public static boolean find(String regex, String value) {
    	Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(value);
        
        return matcher.find();
    }
}

整理了几百本各类技术电子书和视频课程 ,送给小伙伴们。同名公号内回【666】自行领取。和一些小伙伴们建了一个技术交流群,一起探讨技术、分享技术资料,旨在共同学习进步,如果感兴趣就扫码加入我们吧!

在这里插入图片描述


本文转载:CSDN博客