首先说一下正则表达式的匹配规则
对正则匹配表达式解读
首先括号里的用 “ | ”表示或来区分电话号码的字段
所以是13几 150 153 156 186 189 188 这是括号里的前三位的字段,然后后面八位随机
public static void main(String[] args) {
// TODO 自动生成的方法存根
//判断是否是正确的手机号码格式
String regex="(13\\d|15[036]|18[689])\\d{8}";
String str1="18936777900";
String str2="17346997648";
String str3="18639764988";
if(str1.matches(regex))
System.out.println(str1+"是一个合法的地址");
else
System.out.println(str1+"不是一个合法的地址");
if(str2.matches(regex))
System.out.println(str2+"是一个合法的地址");
else
System.out.println(str2+"不是一个合法的地址");
if(str3.matches(regex))
System.out.println(str3+"是一个合法的地址");
else
System.out.println(str3+"不是一个合法的地址");
}
进阶版
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
^代表 开头两位数是固定的 然后接着到或里边去匹配
$代表 匹配结束,将电话号码限制在11位
究极进化版
匹配到所有的字段的电话号码
戳这里去原文