Java通過手機(jī)號(hào)碼獲取地區(qū)號(hào)

一、引入依賴包

<!-- Google 官方全球手機(jī)號(hào)解析庫(kù)(必加) -->
<dependency>
    <groupId>com.googlecode.libphonenumber</groupId>
    <artifactId>libphonenumber</artifactId>
    <version>8.13.47</version>
</dependency>

二、工具類

import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;

/**
 * @author Alan Chen
 * @description 全球手機(jī)號(hào)碼 - 自動(dòng)提取國(guó)家/地區(qū)碼(區(qū)號(hào))
 * @date 2026/4/16
 */
public class GlobalPhoneCodeUtil {

    private static final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();

    public static String getGlobalCountryCode(String globalPhone) {
        if (globalPhone == null || globalPhone.isBlank()) {
            return null;
        }

        String original = globalPhone.trim();

        try {
            Phonenumber.PhoneNumber number;

            // ============= 全球通用規(guī)則:最高優(yōu)先級(jí) =============
            // 1. 以 + 開頭 → 完全交給 Google 庫(kù)自動(dòng)識(shí)別(全球所有國(guó)家都正確)
            if (original.startsWith("+")) {
                number = phoneUtil.parse(original, null);
            }
            // 2. 帶橫杠 -(如 853-xxxx)→ 按澳門解析,自動(dòng)提取區(qū)號(hào)
            else if (original.contains("-")) {
                number = phoneUtil.parse(original, "MO");
            }
            // 3. 11位純數(shù)字 → 中國(guó)大陸 86
            else if (original.replaceAll("[^0-9]", "").length() == 11) {
                number = phoneUtil.parse(original, "CN");
            }
            // 4. 8位純數(shù)字 → 澳門 853
            else {
                number = phoneUtil.parse(original, "MO");
            }

            return String.valueOf(number.getCountryCode());

        } catch (NumberParseException e) {
            return null;
        }
    }

    // ====================== 測(cè)試 ======================
    public static void main(String[] args) {
        // 你原來的例子
        System.out.println(getGlobalCountryCode("853-66202339"));   // 853 ?
        System.out.println(getGlobalCountryCode("13802838734"));    // 86 ?
        System.out.println(getGlobalCountryCode("66623689"));       // 853 ?(澳門)

        // 全球測(cè)試
        System.out.println(getGlobalCountryCode("+85291234567"));   // 852 ?(香港)
        System.out.println(getGlobalCountryCode("+12125551234"));   // 1   ?(美國(guó)/加拿大)
        System.out.println(getGlobalCountryCode("+60123456789"));   // 60  ?(馬來西亞)
        System.out.println(getGlobalCountryCode("+919876543210"));  // 91  ?(印度)
        System.out.println(getGlobalCountryCode("+886912345678"));  // 886 ?(臺(tái)灣)
        System.out.println(getGlobalCountryCode("+6588888888"));    // 65  ?(新加坡)
        System.out.println(getGlobalCountryCode("+447911123456"));  // 44  ?(英國(guó))
        System.out.println(getGlobalCountryCode("+61412345678"));   // 61  ?(澳大利亞)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容