先来看正则表达式:
- 匹配区号3到4位,电话7到8位的固定电话号码:0\d{2,3}-[1-9]\d{6,7}
- 匹配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}
- 0\d{2,3}为区号:国内区号都是以0开头;\d{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位可任意取