2023-05-最新正则表达式判断手机号码
日常使用一些软件时会通过手机号码来注册,这就会用到正则表达式来判断号码是否正确。在项目开发中,我有使用正则来判断手机号码的正确。
现有手机号码段有:
* 三大运营商最新号段 合作版 2023-05
* 移动号段:
* 134 135 136 137 138 139 144 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 195 197 198
* 联通号段:
* 130 131 132 140 145 146 155 156 166 167 171 175 176 185 186 196
* 电信号段:
* 133 141 149 153 162 173 174 177 179 180 181 189 190 191 193 199
* 虚拟运营商:
* 162 165 167 170 171
* 13开头排序:(0-9)(134 135 136 137 138 139 130 131 132 133)
* 14开头排序:(0-1|4-9)(144 147 148 140 145 146 141 149)
* 15开头排序:(0-3|5-9)(150 151 152 157 158 159 155 156 153)
* 16开头排序:(2|5-7)(165 166 167 162)
* 17开头排序:(1-9)(172 178 171 175 176 173 174 177 179)
* 18开头排序:(0-9)(182 183 184 187 188 185 186 180 181 189)
* 19开头排序:(0|1|3|5-9)(195 197 198 196 190 191 193 199)
*
(数据来源于网络)
首先我们有了上面的数就就可以写我们的正则表达式了,思路很重要。先判断手机号码的前三位,再匹配后8位数字即可。
^((13[0-9])|(14([0-1]|[4-9]))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[1-9])|(18[0-9])|(19[0|1|3])|(19[5-9]))\d{8}$
直接上代码:
/**
* 手机号码校验(三大运营商最新号段 合作版 2023-05)
* 移动号段:
* 134 135 136 137 138 139 144 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 195 197 198
* <p>
* 联通号段:
* 130 131 132 140 145 146 155 156 166 167 171 175 176 185 186 196
* <p>
* 电信号段:
* 133 141 149 153 162 173 174 177 179 180 181 189 190 191 193 199
* <p>
* 虚拟运营商:
* 162 165 167 170 171
* <p>
* 13开头排序:(0-9)(134 135 136 137 138 139 130 131 132 133)
* 14开头排序:(0-1|4-9)(144 147 148 140 145 146 141 149)
* 15开头排序:(0-3|5-9)(150 151 152 157 158 159 155 156 153)
* 16开头排序:(2|5-7)(165 166 167 162)
* 17开头排序:(1-9)(172 178 171 175 176 173 174 177 179)
* 18开头排序:(0-9)(182 183 184 187 188 185 186 180 181 189)
* 19开头排序:(0|1|3|5-9)(195 197 198 196 190 191 193 199)
*
* @param phone 手机号码
* @return 是否属于三大运营商号段范围
* @see {https://www.qqzeng.com/article/phone.html}
*/
public static boolean isPhone(String phone) {
String regex = "^((13[0-9])|(14([0-1]|[4-9]))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[1-9])|(18[0-9])|(19[0|1|3])|(19[5-9]))\d{8}$";
Pattern p = Pattern.compile(regex);
return p.matcher(phone).matches();
}
就是这麽简单!
Tips:
最后更新时间:2023-05-19 22:37