欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java常用正則表達(dá)式(身份證號、郵箱、手機(jī)號)格式校驗(yàn)代碼示例

 更新時(shí)間:2025年04月24日 10:16:47   作者:浪九天  
這篇文章主要介紹了Java常用正則表達(dá)式格式校驗(yàn)的相關(guān)資料,講解了使用正則表達(dá)式校驗(yàn)身份證號、郵箱和手機(jī)號,并允許輸入為空字符串,給出了詳細(xì)的代碼示例,需要的朋友可以參考下

身份證號的正則表達(dá)式

若要在 Java 里使用正則表達(dá)式校驗(yàn)身份證號,同時(shí)允許輸入為空字符串,可在原有的身份證號校驗(yàn)正則表達(dá)式基礎(chǔ)上,增加對空字符串的匹配。以下是示例代碼:

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

public class IDCardValidatorWithEmpty {
    // 定義支持空字符串的身份證號校驗(yàn)的正則表達(dá)式
    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);

    /**
     * 校驗(yàn)身份證號的方法,允許空字符串
     * @param idCard 待校驗(yàn)的身份證號
     * @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 = "";

        // 調(diào)用校驗(yàn)方法并輸出結(jié)果
        System.out.println(idCard15 + " 是否為有效的身份證號: " + isValidIDCard(idCard15));
        System.out.println(idCard18 + " 是否為有效的身份證號: " + isValidIDCard(idCard18));
        System.out.println(invalidIdCard + " 是否為有效的身份證號: " + isValidIDCard(invalidIdCard));
        System.out.println("空字符串是否允許: " + isValidIDCard(emptyIdCard));
    }
}

代碼解釋

正則表達(dá)式

^$|(^[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])$)
  • ^$:用于匹配空字符串,^ 代表字符串起始位置,$ 代表字符串結(jié)束位置,二者結(jié)合就表示空字符串。
  • |:這是邏輯或運(yùn)算符,用于分隔不同的匹配規(guī)則。
  • (^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$):此部分用于匹配 15 位身份證號,詳細(xì)解釋如下:
    • [1-9]\\d{7}:身份證號前 8 位,首位不能為 0。
    • ((0\\d)|(1[0-2])):表示月份,范圍是 01 - 12。
    • (([0|1|2]\\d)|3[0-1]):表示日期,范圍是 01 - 31。
    • \\d{3}:最后 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])$):用于匹配 18 位身份證號,具體解釋如下:
    • [1-9]\\d{5}:前 6 位地區(qū)代碼,首位不能為 0。
    • [1-9]\\d{3}:接下來 4 位年份,首位不能為 0。
    • ((0\\d)|(1[0-2])) 和 (([0|1|2]\\d)|3[0-1]):分別表示月份和日期。
    • ((\\d{4})|\\d{3}[Xx]):最后 4 位,可能是 4 位數(shù)字或者前 3 位數(shù)字加最后一位 X 或 x。

方法 isValidIDCard

該方法借助 Matcher 對象來檢查輸入的字符串是否與正則表達(dá)式匹配,若匹配則返回 true,反之返回 false

注意事項(xiàng)

  • 此正則表達(dá)式只能校驗(yàn)身份證號的格式是否正確,無法驗(yàn)證其真實(shí)性和有效性。
  • 對于閏年 2 月日期范圍等特殊情況,正則表達(dá)式無法進(jìn)行精確校驗(yàn),若需要更嚴(yán)格的驗(yàn)證,可能要結(jié)合其他邏輯。

校驗(yàn)郵箱的正則表達(dá)式

在 Java 中,若要校驗(yàn)郵箱且允許空字符串,可以在原本用于校驗(yàn)郵箱格式的正則表達(dá)式基礎(chǔ)上添加對空字符串的匹配規(guī)則。以下是示例代碼:

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

public class EmailValidatorWithEmpty {
    // 定義支持空字符串的郵箱校驗(yàn)正則表達(dá)式
    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);

    /**
     * 校驗(yàn)郵箱的方法,允許空字符串
     * @param email 待校驗(yàn)的郵箱地址
     * @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));
    }
}

代碼解釋

正則表達(dá)式

^$|^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$
  • ^$:用于匹配空字符串。^ 表示字符串的起始位置,$ 表示字符串的結(jié)束位置,二者組合起來就表示一個(gè)空的字符串。
  • |:邏輯或運(yùn)算符,用于分隔不同的匹配規(guī)則。
  • ^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$:用于匹配正常的郵箱格式,具體解釋如下:
    • ^:表示字符串的開始。
    • [a-zA-Z0-9_+&*-]+:匹配郵箱用戶名的開頭部分,允許包含字母、數(shù)字、下劃線、加號、連字符、星號和與號。
    • (?:\\.[a-zA-Z0-9_+&*-]+)*:匹配用戶名中可能出現(xiàn)的點(diǎn)號及其后面的字符,(?: ... ) 是一個(gè)非捕獲組,* 表示前面的部分可以出現(xiàn) 0 次或多次。
    • @:匹配郵箱地址中的 @ 符號。
    • (?:[a-zA-Z0-9-]+\\.)+:匹配域名部分,允許包含字母、數(shù)字和連字符,并且可以有多個(gè)子域名,每個(gè)子域名后面跟著一個(gè)點(diǎn)號。
    • [a-zA-Z]{2,7}:匹配頂級域名,頂級域名由 2 到 7 個(gè)字母組成。
    • $:表示字符串的結(jié)束。

方法 isValidEmail

該方法通過 Matcher 對象檢查輸入的字符串是否與正則表達(dá)式匹配,如果匹配則返回 true,否則返回 false。

注意事項(xiàng)

  • 此正則表達(dá)式雖然能校驗(yàn)郵箱的基本格式,但不能保證郵箱地址是真實(shí)存在且可使用的。
  • 對于一些特殊的郵箱地址,如帶有國際化域名的郵箱,可能需要更復(fù)雜的正則表達(dá)式來進(jìn)行準(zhǔn)確校驗(yàn)。

手機(jī)號的正則表達(dá)式

以下為你提供針對中國大陸手機(jī)號和通用手機(jī)號的校驗(yàn)正則表達(dá)式,同時(shí)支持空字符串校驗(yàn)的 Java 代碼示例。

中國大陸手機(jī)號校驗(yàn)(支持空字符串)

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

public class ChinesePhoneValidatorWithEmpty {
    // 定義支持空字符串的中國大陸手機(jī)號校驗(yàn)正則表達(dá)式
    private static final String PHONE_REGEX = "^$|^1[3-9]\\d{9}$";
    private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);

    /**
     * 校驗(yàn)中國大陸手機(jī)號的方法,允許空字符串
     * @param phone 待校驗(yàn)的手機(jī)號
     * @return 如果手機(jī)號格式正確或者為空字符串返回 true,否則返回 false
     */
    public static boolean isValidChinesePhone(String phone) {
        Matcher matcher = PHONE_PATTERN.matcher(phone);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 有效手機(jī)號
        String validPhone = "13800138000";
        // 無效手機(jī)號
        String invalidPhone = "23800138000";
        // 空字符串
        String emptyPhone = "";

        System.out.println(validPhone + " 是否為有效的中國大陸手機(jī)號: " + isValidChinesePhone(validPhone));
        System.out.println(invalidPhone + " 是否為有效的中國大陸手機(jī)號: " + isValidChinesePhone(invalidPhone));
        System.out.println("空字符串是否允許: " + isValidChinesePhone(emptyPhone));
    }
}

代碼解釋

  • 正則表達(dá)式 ^$|^1[3-9]\\d{9}$
    • ^$:用于匹配空字符串,^ 表示字符串開始,$ 表示字符串結(jié)束,兩者結(jié)合即匹配空內(nèi)容。
    • |:邏輯或運(yùn)算符,分隔不同匹配規(guī)則。
    • ^1[3-9]\\d{9}$:用于匹配中國大陸 11 位手機(jī)號,手機(jī)號以 1 開頭,第二位是 3 - 9 中的一個(gè)數(shù)字,后面跟著 9 位數(shù)字。

通用手機(jī)號校驗(yàn)(支持空字符串)

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

public class GeneralPhoneValidatorWithEmpty {
    // 定義支持空字符串的通用手機(jī)號校驗(yàn)正則表達(dá)式
    private static final String GENERAL_PHONE_REGEX = "^$|^\\+?[1-9]\\d{1,14}$";
    private static final Pattern GENERAL_PHONE_PATTERN = Pattern.compile(GENERAL_PHONE_REGEX);

    /**
     * 校驗(yàn)通用手機(jī)號的方法,允許空字符串
     * @param phone 待校驗(yàn)的手機(jī)號
     * @return 如果手機(jī)號格式正確或者為空字符串返回 true,否則返回 false
     */
    public static boolean isValidGeneralPhone(String phone) {
        Matcher matcher = GENERAL_PHONE_PATTERN.matcher(phone);
        return matcher.matches();
    }

    public static void main(String[] args) {
        // 有效通用手機(jī)號
        String validGeneralPhone = "+8613800138000";
        // 無效通用手機(jī)號
        String invalidGeneralPhone = "+0123456789";
        // 空字符串
        String emptyGeneralPhone = "";

        System.out.println(validGeneralPhone + " 是否為有效的通用手機(jī)號: " + isValidGeneralPhone(validGeneralPhone));
        System.out.println(invalidGeneralPhone + " 是否為有效的通用手機(jī)號: " + isValidGeneralPhone(invalidGeneralPhone));
        System.out.println("空字符串是否允許: " + isValidGeneralPhone(emptyGeneralPhone));
    }
}

代碼解釋

  • 正則表達(dá)式 ^$|^\\+?[1-9]\\d{1,14}$
    • ^$:匹配空字符串。
    • |:邏輯或運(yùn)算符。
    • ^\\+?[1-9]\\d{1,14}$:用于匹配通用手機(jī)號,\\+? 表示國家碼前的 + 號可有可無,[1-9] 表示手機(jī)號第一位不能為 0,\\d{1,14} 表示后面可跟 1 到 14 個(gè)數(shù)字,滿足國際電信聯(lián)盟規(guī)定的最長 15 位手機(jī)號(含國家碼)。

注意事項(xiàng)

  • 正則表達(dá)式只能校驗(yàn)手機(jī)號格式,不能判斷手機(jī)號是否真實(shí)可用。
  • 手機(jī)號規(guī)則可能隨時(shí)間和運(yùn)營商調(diào)整,需根據(jù)實(shí)際情況更新正則表達(dá)式。

總結(jié) 

到此這篇關(guān)于Java常用正則表達(dá)式(身份證號、郵箱、手機(jī)號)格式校驗(yàn)的文章就介紹到這了,更多相關(guān)Java正則表達(dá)式格式校驗(yàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java?io文件操作從文件讀取數(shù)據(jù)的六種方法

    java?io文件操作從文件讀取數(shù)據(jù)的六種方法

    這篇文章主要為大家介紹了java?io操作總結(jié)從文件讀取數(shù)據(jù)的六種方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • java如何獲取本地操作系統(tǒng)進(jìn)程列表

    java如何獲取本地操作系統(tǒng)進(jìn)程列表

    本文介紹了java中是如何獲取當(dāng)前本地操作系統(tǒng)正在運(yùn)行的系統(tǒng)進(jìn)程的信息,需要的朋友可以參考下
    2015-07-07
  • 最新評論