最新验证手机号正则表达式
2019-03-15 本文已影响0人
节庆007
国内手机号目前涵盖号段包括 移动、联通、电信、虚拟运营商
目前已知的号段
- 移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 198
- 联通号段: 130 131 132 145 146 155 156 166 170 171 175 176 185 186
- 电信号段: 133 149 153 170 173 174 177 180 181 189 191 199
- 虚拟运营商: 170
/**
* 判断是否为手机号
*
* @param mobileNums
* @return
*/
public static boolean isMobileNO(String mobileNums) {
/**
* 判断字符串是否符合手机号码格式
* 移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 198
* 联通号段: 130 131 132 145 146 155 156 166 170 171 175 176 185 186
* 电信号段: 133 149 153 170 173 174 177 180 181 189 191 199
* 虚拟运营商: 170
* @param str
* @return 待检测的字符串
*/
// "[1]"代表下一位为数字可以是几,"[0-9]"代表可以为0-9中的一个,"[5,7,9]"表示可以是5,7,9中的任意一位,[^4]表示除4以外的任何一个,\\d{8}"代表后面是可以是0~9的数字,有8位。
String telRegex = "^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
if (TextUtils.isEmpty(mobileNums))
return false;
else
return mobileNums.matches(telRegex);
}
如果你觉得手机号前两位就是13、14、15、16、17、18、19,后面的都不确定,你可以这样设置正则表达式:
String telRegex = "^((13)|(14)|(15)|(16)|(17)|(18)|(19))\\d{9}$";
如果你觉得手机号第一位就是1,后面的都不确定,你可以这样设置正则表达式:
String telRegex = "^(1)\\d{10}$";
这个比较灵活,可以根据自身需求去选择。