国内外手机号码正则

import java.util.regex.Pattern;

/**
 * @Description: 国内外手机号码正则
 * @Author: 
 * @Create Date: 2023年05月18日
 */
public final class GlobalPhoneRegConstant {

    public static final Pattern P_ZH_CN = Pattern.compile("^(\\+?0?86\\_?)?1[345789]\\d{9}$");
    public static final Pattern P_EN_HK = Pattern.compile("^(\\+?0?852\\_?)([6|9])\\d{7}$");
    public static final Pattern P_ZH_TW = Pattern.compile("^(\\+?886\\_?|0)?9\\d{8}$");
    public static final Pattern P_AR_DZ = Pattern.compile("^(\\+?213|0)(5|6|7)\\d{8}$");
    public static final Pattern P_AR_SY = Pattern.compile("^(!?(\\+?963)|0)?9\\d{8}$");
    public static final Pattern P_AR_SA = Pattern.compile("^(!?(\\+?966)|0)?5\\d{8}$");
    public static final Pattern P_EN_US = Pattern.compile("^(\\+?1)?[2_9]\\d{2}[2_9](?!11)\\d{6}$");
    public static final Pattern P_CS_CZ = Pattern.compile("^(\\+?420)? ?[1_9][0_9]{2} ?[0_9]{3} ?[0_9]{3}$");
    public static final Pattern P_DE_DE = Pattern.compile("^(\\+?49[ \\.\\_])?([\\(]{1}[0_9]{1,6}[\\)])?([0_9 \\.\\_\\/]{3,20})((x|ext|extension)[ ]?[0_9]{1,4})?$");
    public static final Pattern P_DA_DK = Pattern.compile("^(\\+?45)?(\\d{8})$");
    public static final Pattern P_EL_GR = Pattern.compile("^(\\+?30)?(69\\d{8})$");
    public static final Pattern P_EN_AU = Pattern.compile("^(\\+?61|0)4\\d{8}$");
    public static final Pattern P_EN_GB = Pattern.compile("^(\\+?44|0)7\\d{9}$");
    public static final Pattern P_EN_HK2 = Pattern.compile("^(\\+?852\\_?)?[569]\\d{3}\\_?\\d{4}$");
    public static final Pattern P_EN_IN = Pattern.compile("^(\\+?91|0)?[789]\\d{9}$");
    public static final Pattern P_EN_NZ = Pattern.compile("^(\\+?64|0)2\\d{7,9}$");
    public static final Pattern P_EN_ZA = Pattern.compile("^(\\+?27|0)\\d{9}$");
    public static final Pattern P_EN_ZM = Pattern.compile("^(\\+?26)?09[567]\\d{7}$");
    public static final Pattern P_ES_ES = Pattern.compile("^(\\+?34)?(6\\d{1}|7[1234])\\d{7}$");
    public static final Pattern P_FI_FI = Pattern.compile("^(\\+?358|0)\\s?(4(0|1|2|4|5)?|50)\\s?(\\d\\s?){4,8}\\d$");
    public static final Pattern P_FR_FR = Pattern.compile("^(\\+?33|0)[67]\\d{8}$");
    public static final Pattern P_HE_IL = Pattern.compile("^(\\+972|0)([23489]|5[0248]|77)[1_9]\\d{6}");
    public static final Pattern P_HU_HU = Pattern.compile("^(\\+?36)(20|30|70)\\d{7}$");
    public static final Pattern P_IT_IT = Pattern.compile("^(\\+?39)?\\s?3\\d{2} ?\\d{6,7}$");
    public static final Pattern P_JA_JP = Pattern.compile("^(\\+?81|0)\\d{1,4}[ \\_]?\\d{1,4}[ \\_]?\\d{4}$");
    public static final Pattern P_MS_MY = Pattern.compile("^(\\+?6?01){1}(([145]{1}(\\_|\\s)?\\d{7,8})|([236789]{1}(\\s|\\_)?\\d{7}))$");
    public static final Pattern P_NB_NO = Pattern.compile("^(\\+?47)?[49]\\d{7}$");
    public static final Pattern P_NL_BE = Pattern.compile("^(\\+?32|0)4?\\d{8}$");
    public static final Pattern P_NN_NO = Pattern.compile("^(\\+?47)?[49]\\d{7}$");
    public static final Pattern P_PL_PL = Pattern.compile("^(\\+?48)? ?[5_8]\\d ?\\d{3} ?\\d{2} ?\\d{2}$");
    public static final Pattern P_PT_BR = Pattern.compile("^(\\+?55|0)\\_?[1_9]{2}\\_?[2_9]{1}\\d{3,4}\\_?\\d{4}$");
    public static final Pattern P_PT_PT = Pattern.compile("^(\\+?351)?9[1236]\\d{7}$");
    public static final Pattern P_RU_RU = Pattern.compile("^(\\+?7|8)?9\\d{9}$");
    public static final Pattern P_SR_RS = Pattern.compile("^(\\+3816|06)[_ \\d]{5,9}$");
    public static final Pattern P_TR_TR = Pattern.compile("^(\\+?90|0)?5\\d{9}$");
    public static final Pattern P_VI_VN = Pattern.compile("^(\\+?84|0)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$");

    public static boolean isLegal(String phone) {
        return P_ZH_CN.matcher(phone).matches() ||
                P_EN_HK.matcher(phone).matches() ||
                P_ZH_TW.matcher(phone).matches() ||
                P_AR_DZ.matcher(phone).matches() ||
                P_AR_SY.matcher(phone).matches() ||
                P_AR_SA.matcher(phone).matches() ||
                P_EN_US.matcher(phone).matches() ||
                P_CS_CZ.matcher(phone).matches() ||
                P_DE_DE.matcher(phone).matches() ||
                P_DA_DK.matcher(phone).matches() ||
                P_EL_GR.matcher(phone).matches() ||
                P_EN_AU.matcher(phone).matches() ||
                P_EN_GB.matcher(phone).matches() ||
                P_EN_HK2.matcher(phone).matches() ||
                P_EN_IN.matcher(phone).matches() ||
                P_EN_NZ.matcher(phone).matches() ||
                P_EN_ZA.matcher(phone).matches() ||
                P_EN_ZM.matcher(phone).matches() ||
                P_ES_ES.matcher(phone).matches() ||
                P_FI_FI.matcher(phone).matches() ||
                P_FR_FR.matcher(phone).matches() ||
                P_HE_IL.matcher(phone).matches() ||
                P_HU_HU.matcher(phone).matches() ||
                P_IT_IT.matcher(phone).matches() ||
                P_JA_JP.matcher(phone).matches() ||
                P_MS_MY.matcher(phone).matches() ||
                P_NB_NO.matcher(phone).matches() ||
                P_NL_BE.matcher(phone).matches() ||
                P_NN_NO.matcher(phone).matches() ||
                P_PL_PL.matcher(phone).matches() ||
                P_PT_BR.matcher(phone).matches() ||
                P_PT_PT.matcher(phone).matches() ||
                P_RU_RU.matcher(phone).matches() ||
                P_SR_RS.matcher(phone).matches() ||
                P_TR_TR.matcher(phone).matches() ||
                P_VI_VN.matcher(phone).matches();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值