2021-08-最新正则表达式判断手机号码

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

猜你喜欢

转载自blog.csdn.net/github_35033182/article/details/110650889
今日推荐