两个正则表达式:匹配固定电话号码,匹配手机号码
先来看正则表达式:
- 匹配区号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位可任意取