1.22 实例:正则表达式验证电话号码
在注冊會員時,經常需要輸入電話號碼,電話號碼是指手機號碼或者固定電話。如果輸入的內容不合法,則會向用戶輸出提示。本實例模擬實現電話號碼的驗證功能,接收用戶在控制臺輸入的電話號碼,然后進行判斷,并將結果輸出。
(1) 創建名為 Test.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 注冊結束。總結
以上是生活随笔為你收集整理的1.22 实例:正则表达式验证电话号码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.21 Pattern类和Matche
- 下一篇: 1.23 实例:正则表达式验证IP地址