设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Java正则表达式验证电话号码

发布时间:2022-07-06 11:16 所属栏目:51 来源:互联网
导读:在注册会员时,经常需要输入电话号码,电话号码是指手机号码或者固定电话。如果输入的内容不合法,则会向用户输出提示。本实例模拟实现电话号码的验证功能,接收用户在控制台输入的电话号码,然后进行判断,并将结果输出。 在这里使用《Java正则表达式》一节
  在注册会员时,经常需要输入电话号码,电话号码是指手机号码或者固定电话。如果输入的内容不合法,则会向用户输出提示。本实例模拟实现电话号码的验证功能,接收用户在控制台输入的电话号码,然后进行判断,并将结果输出。
 
  在这里使用《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
  注册结束。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读