1.22 实例:正则表达式验证电话号码
在注冊(cè)會(huì)員時(shí),經(jīng)常需要輸入電話號(hào)碼,電話號(hào)碼是指手機(jī)號(hào)碼或者固定電話。如果輸入的內(nèi)容不合法,則會(huì)向用戶輸出提示。本實(shí)例模擬實(shí)現(xiàn)電話號(hào)碼的驗(yàn)證功能,接收用戶在控制臺(tái)輸入的電話號(hào)碼,然后進(jìn)行判斷,并將結(jié)果輸出。
(1) 創(chuàng)建名為 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 變量,它是用于驗(yàn)證電話號(hào)碼的表達(dá)式。代碼如下:
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}";電話號(hào)碼包括固定電話和手機(jī)號(hào)碼。其中固定電話是由區(qū)號(hào)和號(hào)碼組成,區(qū)號(hào)是以 0 開頭的,后面是 2~3 位數(shù),因此在匹配區(qū)號(hào)的時(shí)候可以使用正則表達(dá)式0\d{2,3}。固定電話號(hào)碼由 7~8 位數(shù)字組成,因此可以使用表達(dá)式\d{7,8}來進(jìn)行匹配。固定電話的組合方式可能是“區(qū)號(hào)-號(hào)碼”或者是“區(qū)號(hào)號(hào)碼”,因此匹配固定電話號(hào)碼時(shí),可以使用“0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}”表達(dá)式。
手機(jī)號(hào)碼是 11 位數(shù),并且以數(shù)字 1 開頭。考慮到手機(jī)號(hào)碼的特殊性,這里使用“13[0-9]\\d{8}|15[1089]\\d{8}”表達(dá)式進(jìn)行匹配。該正則表達(dá)式驗(yàn)證以 13 或 15 開頭的手機(jī)號(hào)碼; 以 15 開頭的電話號(hào)碼,第 3 位數(shù)字只能是 1、0、8、9 中的一個(gè)。
(3) 聲明 String 類型的 answer 變量,它表示是否繼續(xù)驗(yàn)證電話號(hào)碼。代碼如下:
String answer = "Y";(4) 使用 do…while 語句進(jìn)行操作,首先接收用戶在控制臺(tái)輸入的電話號(hào)碼,然后利用 Pattern 類進(jìn)行編譯,接著創(chuàng)建給定輸入模式的匹配器,調(diào)用 matches() 方法返回匹配的結(jié)果。如果結(jié)果為 true 表示驗(yàn)證通過,如果為 false 表示驗(yàn)證失敗。代碼如下:
do {System.out.print("請(qǐng)留下您的電話號(hào)碼:");Scanner scan = new Scanner(System.in);String phone = scan.next(); // 接收用戶在控制臺(tái)輸入的電話號(hào)碼Pattern pattern = Pattern.compile(regex); // 編譯正則表達(dá)式Matcher matcher = pattern.matcher(phone); // 創(chuàng)建給定輸入模式的匹配器boolean bool = matcher.matches();if(bool) { // 如果驗(yàn)證通過System.out.println("輸入的電話號(hào)碼格式正確。");} else {System.out.println("輸入的電話號(hào)碼無效,格式不正確。");}System.out.print("是否繼續(xù)輸入?(Y/N 或者 y/n)");answer=scan.next(); }while(answer.equalsIgnoreCase("Y")); System.out.println("注冊(cè)結(jié)束。");(5) 運(yùn)行代碼進(jìn)行測(cè)試,如下所示:
請(qǐng)留下您的電話號(hào)碼:18812345678 輸入的電話號(hào)碼無效,格式不正確。 是否繼續(xù)輸入?(Y/N 或者 y/n)y 請(qǐng)留下您的電話號(hào)碼:180112345678 輸入的電話號(hào)碼無效,格式不正確。 是否繼續(xù)輸入?(Y/N 或者 y/n)n 注冊(cè)結(jié)束。 請(qǐng)留下您的電話號(hào)碼:010-12345678 輸入的電話號(hào)碼格式正確。 是否繼續(xù)輸入?(Y/N 或者 y/n)y 請(qǐng)留下您的電話號(hào)碼:010-123456789 輸入的電話號(hào)碼無效,格式不正確。 是否繼續(xù)輸入?(Y/N 或者 y/n)y 請(qǐng)留下您的電話號(hào)碼:0388-12345678 輸入的電話號(hào)碼格式正確。 是否繼續(xù)輸入?(Y/N 或者 y/n)n 注冊(cè)結(jié)束。總結(jié)
以上是生活随笔為你收集整理的1.22 实例:正则表达式验证电话号码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.21 Pattern类和Matche
- 下一篇: 1.23 实例:正则表达式验证IP地址