java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java正则表达式格式校验

Java常用正则表达式(身份证号、邮箱、手机号)格式校验代码示例

作者:浪九天

这篇文章主要介绍了Java常用正则表达式格式校验的相关资料,讲解了使用正则表达式校验身份证号、邮箱和手机号,并允许输入为空字符串,给出了详细的代码示例,需要的朋友可以参考下

身份证号的正则表达式

若要在 Java 里使用正则表达式校验身份证号,同时允许输入为空字符串,可在原有的身份证号校验正则表达式基础上,增加对空字符串的匹配。以下是示例代码:

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

public class IDCardValidatorWithEmpty {
    // 定义支持空字符串的身份证号校验的正则表达式
    private static final String ID_CARD_REGEX = "^$|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)";
    private static final Pattern ID_CARD_PATTERN = Pattern.compile(ID_CARD_REGEX);

    /**
     * 校验身份证号的方法,允许空字符串
     * @param idCard 待校验的身份证号
     * @return 如果身份证号格式正确或者为空字符串返回 true,否则返回 false
     */
    public static boolean isValidIDCard(String idCard) {
        Matcher matcher = ID_CARD_PATTERN.matcher(idCard);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 测试用的 15 位身份证号
        String idCard15 = "110105880620517";
        // 测试用的 18 位身份证号
        String idCard18 = "11010519880620517X";
        // 无效的身份证号
        String invalidIdCard = "123456789012345678";
        // 空字符串
        String emptyIdCard = "";

        // 调用校验方法并输出结果
        System.out.println(idCard15 + " 是否为有效的身份证号: " + isValidIDCard(idCard15));
        System.out.println(idCard18 + " 是否为有效的身份证号: " + isValidIDCard(idCard18));
        System.out.println(invalidIdCard + " 是否为有效的身份证号: " + isValidIDCard(invalidIdCard));
        System.out.println("空字符串是否允许: " + isValidIDCard(emptyIdCard));
    }
}

代码解释

正则表达式

^$|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)

方法 isValidIDCard

该方法借助 Matcher 对象来检查输入的字符串是否与正则表达式匹配,若匹配则返回 true,反之返回 false

注意事项

校验邮箱的正则表达式

在 Java 中,若要校验邮箱且允许空字符串,可以在原本用于校验邮箱格式的正则表达式基础上添加对空字符串的匹配规则。以下是示例代码:

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

public class EmailValidatorWithEmpty {
    // 定义支持空字符串的邮箱校验正则表达式
    private static final String EMAIL_REGEX = "^$|^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
    private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX);

    /**
     * 校验邮箱的方法,允许空字符串
     * @param email 待校验的邮箱地址
     * @return 如果邮箱格式正确或者为空字符串返回 true,否则返回 false
     */
    public static boolean isValidEmail(String email) {
        Matcher matcher = EMAIL_PATTERN.matcher(email);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 有效邮箱
        String validEmail = "example@example.com";
        // 无效邮箱
        String invalidEmail = "example.example.com";
        // 空字符串
        String emptyEmail = "";

        System.out.println(validEmail + " 是否为有效的邮箱地址: " + isValidEmail(validEmail));
        System.out.println(invalidEmail + " 是否为有效的邮箱地址: " + isValidEmail(invalidEmail));
        System.out.println("空字符串是否允许: " + isValidEmail(emptyEmail));
    }
}

代码解释

正则表达式

^$|^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$

方法 isValidEmail

该方法通过 Matcher 对象检查输入的字符串是否与正则表达式匹配,如果匹配则返回 true,否则返回 false

注意事项

手机号的正则表达式

以下为你提供针对中国大陆手机号和通用手机号的校验正则表达式,同时支持空字符串校验的 Java 代码示例。

中国大陆手机号校验(支持空字符串)

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

public class ChinesePhoneValidatorWithEmpty {
    // 定义支持空字符串的中国大陆手机号校验正则表达式
    private static final String PHONE_REGEX = "^$|^1[3-9]\\d{9}$";
    private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);

    /**
     * 校验中国大陆手机号的方法,允许空字符串
     * @param phone 待校验的手机号
     * @return 如果手机号格式正确或者为空字符串返回 true,否则返回 false
     */
    public static boolean isValidChinesePhone(String phone) {
        Matcher matcher = PHONE_PATTERN.matcher(phone);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 有效手机号
        String validPhone = "13800138000";
        // 无效手机号
        String invalidPhone = "23800138000";
        // 空字符串
        String emptyPhone = "";

        System.out.println(validPhone + " 是否为有效的中国大陆手机号: " + isValidChinesePhone(validPhone));
        System.out.println(invalidPhone + " 是否为有效的中国大陆手机号: " + isValidChinesePhone(invalidPhone));
        System.out.println("空字符串是否允许: " + isValidChinesePhone(emptyPhone));
    }
}

代码解释

通用手机号校验(支持空字符串)

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

public class GeneralPhoneValidatorWithEmpty {
    // 定义支持空字符串的通用手机号校验正则表达式
    private static final String GENERAL_PHONE_REGEX = "^$|^\\+?[1-9]\\d{1,14}$";
    private static final Pattern GENERAL_PHONE_PATTERN = Pattern.compile(GENERAL_PHONE_REGEX);

    /**
     * 校验通用手机号的方法,允许空字符串
     * @param phone 待校验的手机号
     * @return 如果手机号格式正确或者为空字符串返回 true,否则返回 false
     */
    public static boolean isValidGeneralPhone(String phone) {
        Matcher matcher = GENERAL_PHONE_PATTERN.matcher(phone);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 有效通用手机号
        String validGeneralPhone = "+8613800138000";
        // 无效通用手机号
        String invalidGeneralPhone = "+0123456789";
        // 空字符串
        String emptyGeneralPhone = "";

        System.out.println(validGeneralPhone + " 是否为有效的通用手机号: " + isValidGeneralPhone(validGeneralPhone));
        System.out.println(invalidGeneralPhone + " 是否为有效的通用手机号: " + isValidGeneralPhone(invalidGeneralPhone));
        System.out.println("空字符串是否允许: " + isValidGeneralPhone(emptyGeneralPhone));
    }
}

代码解释

注意事项

总结 

到此这篇关于Java常用正则表达式(身份证号、邮箱、手机号)格式校验的文章就介绍到这了,更多相关Java正则表达式格式校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文