C語言中文網 目錄

Java正則表達式驗證電話號碼

在注冊會員時,經常需要輸入電話號碼,電話號碼是指手機號碼或者固定電話。如果輸入的內容不合法,則會向用戶輸出提示。本實例模擬實現電話號碼的驗證功能,接收用戶在控制臺輸入的電話號碼,然后進行判斷,并將結果輸出。

在這里使用前面介紹的元字符、限定符及正則表達式來實現,步驟如下。

(1) 創建名為 Test21.java 的 Java 文件,在 main() 方法中開始編寫代碼。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Text21
{
    public static void main(String[] args)
    {
        //編寫代碼
    }
}

(2) 聲明 String 類型的 regex 變量,它是用于驗證電話號碼的表達式。代碼如下:
String regex="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}|13[0-9]\\d{8}|15[1089]\\d{8}";

電話號碼包括固定電話和手機號碼。其中固定電話是由區號和號碼組成,區號是以 0 開頭的,后面是 2~3 位數,因此在匹配區號的時候可以使用正則表達式 0\d{2,3},固定電話號碼由 7~8 位數字組成,因此可以使用表達式 \d{7,8} 來進行匹配。固定電話的組合方式可能是“區號-號碼”或者是“區號號碼”,因此匹配固定電話號碼時,可以使用“0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}” 表達式。

手機號碼是 11 位數,并且以數字 1 開頭。考慮到手機號碼的特殊性,這里使用“13[0-9]\\d{8}|15[1089]\\d{8}”表達式進行匹配。該正則表達式驗證以 13 或 15 開頭的手機號碼; 以 15 開頭的電話號碼,第 3 位數字只能是 1、0、8、9 中的一個。

(3) 聲明 String 類型的 answer 變量,它表示是否繼續驗證電話號碼。代碼如下:
String answer="Y";

(4) 使用 do…while 語句進行操作,首先接收用戶在控制臺輸入的電話號碼,然后利用 Pattern 類進行編譯,接著創建給定輸入模式的匹配器,調用 matches() 方法返回匹配的結果。如果結果為 true 表示驗證通過,如果為 false 表示驗證失敗。代碼如下:
do
{
    System.out.print("請留下您的電話號碼:");
    Scanner scan=new Scanner(System.in);
    String phone=scan.next();    //接收用戶在控制臺輸入的電話號碼
    Pattern pattern=Pattern.compile(regex);    //編譯正則表達式
    Matcher matcher=pattern.matcher(phone);    //創建給定輸入模式的匹配器
    boolean bool=matcher.matches();
    if(bool)
    { //如果驗證通過
        System.out.println("輸入的電話號碼格式正確。");
    }
    else
    {
        System.out.println("輸入的電話號碼無效,格式不正確。");
    }
    System.out.print("是否繼續輸入?(Y/N 或者 y/n)");
    answer=scan.next();
}while(answer.equalsIgnoreCase("Y"));
System.out.println("注冊結束。");

(5) 運行代碼進行測試,如下所示:
請留下您的電話號碼:18812345678
輸入的電話號碼無效,格式不正確。
是否繼續輸入?(Y/N 或者 y/n)y
請留下您的電話號碼:180112345678
輸入的電話號碼無效,格式不正確。
是否繼續輸入?(Y/N 或者 y/n)n
注冊結束。
請留下您的電話號碼:010-12345678
輸入的電話號碼格式正確。
是否繼續輸入?(Y/N 或者 y/n)y
請留下您的電話號碼:010-123456789
輸入的電話號碼無效,格式不正確。
是否繼續輸入?(Y/N 或者 y/n)y
請留下您的電話號碼:0388-12345678
輸入的電話號碼格式正確。
是否繼續輸入?(Y/N 或者 y/n)n
注冊結束。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo