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

樵夫2021-08-26 11:14

在注册会员时,经常需要输入电话号码,电话号码是指手机号码或者固定电话。如果输入的内容不合法,则会向用户输出提示。本实例模拟实现电话号码的验证功能,接收用户在控制台输入的电话号码,然后进行判断,并将结果输出。

在这里使用《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位数,因此在匹配区号的时候可以使用正则表达式0d{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
注册结束。

以上就是小编为大家整理发布的“Java正则表达式验证电话号码”一文,更多相关内容尽在开课吧Java教程频道。

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

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营