手机号码正则

匹配手机号码的正则表达式:^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$


目前匹配号段

中国电信号段


133、149、153、173、177、180、181、189、199

中国联通号段

130、131、132、145、155、156、166、175、176、185、186

中国移动号段

134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198

其他号段

14号段以前为 上网卡专属号段,如 中国联通的是145, 中国移动的是147等等。
电信:1700、1701、1702
移动:1703、1705、1706
联通:1704、1707、1708、1709、171

### 手机号码正则表达式校验的实现方式 手机号码正则表达式校验是一种常见的输入验证手段,用于确保用户输入的手机号码符合指定的标准。根据最新的号段规则和 Java 编程实践,以下是详细的实现方法。 #### 正则表达式的定义 基于当前主流运营商(中国移动、中国联通、中国电信)以及虚拟运营商的号段分布,可以设计以下两种常用的正则表达式: 1. **简单版正则表达式** 适用于大多数常规场景下的手机号码校验。 ```java "^1[3|4|5|7|8][0-9]\\d{8}$" [^2] ``` - 开头固定为 `1`。 - 第二位数字限定为 `[3, 4, 5, 7, 8]`。 - 后续八位为任意数字。 2. **增强版正则表达式** 提供更加严格的匹配规则,覆盖具体的号段范围。 ```java "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$" [^2] ``` - 明确指定了各个运营商的具体号段。 - 支持更多细分号段,例如 `145/147`(无线上网卡)、`170/171`(虚拟运营商)等。 --- #### 实现代码示例 以下是一个完整的 Java 方法实现手机号码正则校验功能: ```java import java.util.regex.Pattern; public class MobileValidator { private static final String SIMPLE_REGEX = "^1[3|4|5|7|8][0-9]\\d{8}$"; [^2] private static final String STRICT_REGEX = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"; [^2] /** * 判断手机号是否合法 * * @param mobile 待校验的手机号 * @return true 表示合法,false 表示非法 */ public static boolean isMobile(String mobile) { if (mobile == null || mobile.length() != 11) { return false; } Pattern pattern = Pattern.compile(STRICT_REGEX); [^2] return pattern.matcher(mobile).matches(); } public static void main(String[] args) { String testNumber = "13919190810"; boolean isValid = isMobile(testNumber); if (isValid) { System.out.println("手机号符合规则。"); } else { System.out.println("这个号码不符合规则。"); } } } ``` --- #### 说明 1. 上述代码中提供了两个正则表达式选项:`SIMPLE_REGEX` 和 `STRICT_REGEX`。可以根据实际需求选择合适的版本。 2. 在 `isMobile` 方法中,先判断手机号长度是否为 11 位,再利用正则表达式进一步验证其合法性。 3. 测试用例展示了如何调用该方法并对结果进行打印输出。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值