先来看正则表达式:

  1. 匹配区号3到4位,电话7到8位的固定电话号码:0\d{2,3}-[1-9]\d{6,7}
  2. 匹配11位手机号码1[3-9]\\d{9}

 

1. 匹配区号3到4位,电话7到8位的固定电话,区号与电话号之间用-分隔

Java代码:

1 public void phoneNumber() {
 2 
 3         String regex = "0\\d{2,3}-[1-9]\\d{6,7}";
 4 
 5         ArrayList<String> list = new ArrayList<>();
 6         list.add("010 12345678");
 7         list.add("A20-9999999");
 8         list.add("0755-7654.321");
 9         list.add("010-12345678");
10         list.add("020-9999999");
11         list.add("0755-7654321");
12 
13         for (String s : list) {
14             if (s.matches(regex)) {
15                 System.out.println("测试成功: " + s);
16             } else {
17                 System.out.println("测试失败: " + s);
18             }
19         }
20     }

0\d{2,3}-[1-9]\d{6,7}

  1.  0\d{2,3}为区号:国内区号都是以0开头;\d{2,3},2到3位任意数字;
  2. - :区号与电话号分隔;
  3.  [1-9]\d{6,7}为电话号: [1-9],电话号第一位不能为0;\d{6,7},6到7位任意数字。

 

 

2. 匹配11位手机号码

Java代码:

1 public void telephoneNumber() {
 2 
 3         String regex = "1[3-9]\\d{9}";
 4 
 5 
 6         ArrayList<String> list = new ArrayList<>();
 7         list.add("15616161616");
 8         list.add("15912340987");
 9         list.add("01234567891");
10         list.add("29872154879");
11         list.add("12345678910");
12         list.add("0755-7654321");
13 
14         for (String s : list) {
15             if (s.matches(regex)) {
16                 System.out.println("测试成功: " + s);
17             } else {
18                 System.out.println("测试失败: " + s);
19             }
20         }
21     }

1[3-9]\\d{9}

分析:国内手机号第一位都是1,第二位是3-9之间的数字,后面9位可任意取