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


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

  在這里使用《Java正則表達式》一節中講到的正則表達式支持的字符來實現,步驟如下。

(1)創建名為Test21.java的Java文件,在main()方法中開始編寫代碼。

import java.until.Scanner;
import java.until.regex.Matcher;
import java.until.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
輸入的電話號碼無效,格式不正確。
是否繼續輸入?(Y/N或者y/n)y
請留下您的電話號碼:0388-12345678
輸入的電話號碼格式正確。
是否繼續輸入?(Y/N或者y/n)n
注冊結束。

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM