Android

最新验证手机号正则表达式

2019-03-15  本文已影响0人  节庆007

国内手机号目前涵盖号段包括 移动、联通、电信、虚拟运营商

目前已知的号段

  1. 移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 198
  2. 联通号段: 130 131 132 145 146 155 156 166 170 171 175 176 185 186
  3. 电信号段: 133 149 153 170 173 174 177 180 181 189 191 199
  4. 虚拟运营商: 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}$";

这个比较灵活,可以根据自身需求去选择。

上一篇下一篇

猜你喜欢

热点阅读