0
点赞
收藏
分享

微信扫一扫

JAVA编程用正则表达式判断电话号码是联通还是电信移动

JAVA编程用正则表达式判断电话号码是联通还是电信移动

在日常生活中,我们经常需要判断一个电话号码是属于联通、电信还是移动。为了方便起见,我们可以使用正则表达式来快速判断电话号码的运营商。本文将介绍如何使用JAVA编程语言使用正则表达式判断电话号码的运营商,并附带代码示例。

正则表达式的基本概念

正则表达式是一种描述字符串模式的工具。它可以用来匹配、搜索、替换字符串。在JAVA中,我们可以使用java.util.regex包来使用正则表达式。

下面是一些常用的正则表达式的语法:

  • .: 匹配任意单个字符。
  • []: 匹配括号内的任意字符。
  • [^]: 匹配除了括号内的字符之外的任意字符。
  • *: 匹配前面的字符0次或多次。
  • +: 匹配前面的字符1次或多次。
  • ?: 匹配前面的字符0次或1次。
  • {n}: 匹配前面的字符恰好n次。
  • {n,}: 匹配前面的字符至少n次。
  • {n,m}: 匹配前面的字符至少n次、最多m次。
  • |: 匹配两个或多个表达式之一。
  • ^: 匹配字符串的开头。
  • $: 匹配字符串的结尾。

电话号码正则表达式

下面是判断电话号码是联通、电信还是移动的正则表达式:

  • 联通号码:^(13[0-2]|145|15[5-6]|176|18[5-6])\d{8}$
  • 电信号码:^(133|149|153|173|177|18[0-1|9])\d{8}$
  • 移动号码:^(134[0-8]|13[5-9]|147|15[0-2|7-9]|165|172|178|18[2-4|7-8])\d{8}$

JAVA代码示例

下面是使用JAVA编程语言判断电话号码运营商的示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneNumberClassifier {

    public static void main(String[] args) {
        String phoneNumber = "13912345678"; // 电话号码
        String regexChinaUnicom = "^(13[0-2]|145|15[5-6]|176|18[5-6])\\d{8}$"; // 联通号码正则表达式
        String regexChinaTelecom = "^(133|149|153|173|177|18[0-1|9])\\d{8}$"; // 电信号码正则表达式
        String regexChinaMobile = "^(134[0-8]|13[5-9]|147|15[0-2|7-9]|165|172|178|18[2-4|7-8])\\d{8}$"; // 移动号码正则表达式

        Pattern patternChinaUnicom = Pattern.compile(regexChinaUnicom);
        Pattern patternChinaTelecom = Pattern.compile(regexChinaTelecom);
        Pattern patternChinaMobile = Pattern.compile(regexChinaMobile);

        Matcher matcherChinaUnicom = patternChinaUnicom.matcher(phoneNumber);
        Matcher matcherChinaTelecom = patternChinaTelecom.matcher(phoneNumber);
        Matcher matcherChinaMobile = patternChinaMobile.matcher(phoneNumber);

        if (matcherChinaUnicom.matches()) {
            System.out.println("该号码属于中国联通。");
        } else if (matcherChinaTelecom.matches()) {
            System.out.println("该号码属于中国电信。");
        } else if (matcherChinaMobile.matches()) {
            System.out.println("该号码属于中国移动。");
        } else {
            System.out.println("该号码无法确定运营商。");
        }
    }
}

以上代码首先定义了一个电话号码字符串phoneNumber,然后分别定义了联通、电信和移动号码的正则表达式。接下来,使用java.util.regex.Pattern类的compile方法将正则表达式编译为Pattern对象,然后使用Matcher类的matches方法进行匹配。最后,根据匹

举报

相关推荐

0 条评论