Java正则表达式验证工具类


前言

在系统开发中,有时会涉及到用户一些基本信息验证,本篇文章封装了一个简单的Java工具验证类


提示:验证方法比较基础,不能真正验证证件是否有效,测试中的证件信息均为随机信息

一、验证工具类

示例:

import java.util.regex.Pattern;

public class ValidatorUtils {
    //判断手机号是否有效
    public static boolean isValidPhoneNumber(String phone) {
        return Pattern.matches("^1[3|4|5|6|7|8|9][0-9]\\d{8}$", phone);
    }

    //判断邮箱是否有效
    public static boolean isValidEmail(String email) {
        return Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email);
    }

    //判断密码是否有效
    //密码必须包含大小写字母和数字的组合,不能使用特殊字符,长度在6-20之间
    public static boolean isValidPassword(String password) {
        return Pattern.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$", password);
    }

    //判断姓名是否有效,验证字符串是否由2-4个汉字组成
    public static boolean isValidName(String name) {
        return Pattern.matches("^[\\u4e00-\\u9fa5]{2,4}$", name);
    }

    //判断身份证号是否有效

    /**
     * '^':表示匹配字符串的开头
     * '[1-9]':表示匹配1-9之间的数字,确保身份证号码的前6位不为0
     * '\\d{5}':表示匹配5位数字,确保身份证号码的前6位为数字,用于匹配地区码
     * '(18|19|([23]\\d))':表示匹配18或19或20-23之间的数字,确保身份证号码的前2位为18或19或20-23之间的数字,用于匹配年份
     * '\\d{2}':表示接下来的2位是月份,范围是01-12之间的数字
     *  '((0[1-9])|(1[0-2]))':表示匹配月份,范围是01-12之间的数字
     *  '(([0-2][1-9])|10|20|30|31)':表示日期,前两位0-2表示01-29,10、20、30、31分别单独列出
     *  '\\d{3}':表示匹配3位数字,确保身份证号码的第18位为数字,用于匹配顺序码
     * '[0-9Xx]':表示匹配0-9或X或x,确保身份证号码的第17位为数字或X或x,用于匹配校验位
     *
     * @param idCard
     * @return
     */
    public static boolean isValidIdCard(String idCard) {
        return Pattern.matches("^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$", idCard);
    }

    //判断车牌号是否有效
    // 用于验证车牌号码的格式是否符合中国大陆的车牌号规则
    public static boolean isValidCarNumber(String carNumber) {
        return Pattern.matches("^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$", carNumber);
    }

    //判断银行卡号是否有效
    // 用于验证银行卡号的格式是否符合中国银行卡号的规则
    public static boolean isValidBankCardNumber(String bankCardNumber) {
        return Pattern.matches("^\\d{16,19}$", bankCardNumber);
    }

    //判断IP地址是否有效
    public static boolean isValidIpAddress(String ipAddress) {
        return Pattern.matches("^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$", ipAddress);
    }

    //判断邮政编码是否有效
    public static boolean isValidPostalCode(String postalCode) {
        return Pattern.matches("^[1-9]\\d{5}$", postalCode);
    }


    public static void main(String[] args) {
        System.out.println(isValidPhoneNumber("19899993333"));
        System.out.println(isValidEmail("15896357891@163.com"));
        System.out.println(isValidPassword("qwer123456"));
        System.out.println(isValidName("王二麻子"));
        System.out.println(isValidIdCard("358456199805214571"));
        System.out.println(isValidCarNumber("苏M88888"));
        System.out.println(isValidBankCardNumber("6228480000000000000"));
        System.out.println(isValidIpAddress("192.168.1.1"));
        System.out.println(isValidPostalCode("225300"));
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2021年的Java正则表达式继续成为开发人员在字符串处理中的重要工具。正则表达式是一种强大的模式匹配工具,它可以用来在字符串中搜索、替换和验证特定的文本模式。 Java正则表达式库由java.util.regex包提供。它提供了Pattern和Matcher两个主要类,用于表示正则表达式和进行匹配操作。 Pattern类是一个正则表达式的编译表示。通过调用Pattern.compile()方法,可以将字符串形式的正则表达式编译为Pattern对象。编译后的Pattern对象可以进行多次匹配操作。 Matcher类是Pattern与输入字符串之间的桥梁。它提供了各种方法,如match()、find()和replace(),用于对输入字符串进行匹配、查找和替换操作。Matcher类还提供了详细的匹配结果信息,如匹配位置、匹配组等。 在2021年,Java正则表达式库得到了进一步改进和增强。Java 11版本引入了一些新的正则表达式特性,包括命名组捕获、后向引用、条件匹配等。这些新特性进一步提高了正则表达式的灵活性和可操作性。 正则表达式Java中的应用非常广泛。它可以用于验证用户输入、提取字符串中的特定信息、进行文本处理和转换等。通过合理使用正则表达式开发人员可以更高效地处理字符串操作,并且代码更加简洁易读。 总之,2021年的Java正则表达式在字符串处理中继续发挥着重要作用。它通过Pattern和Matcher类提供了强大的文本模式匹配功能,为开发人员提供了更多的选择和灵活性。随着Java版本的不断升级,正则表达式库也在不断改进和增强,为开发人员带来更好的开发体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值