匹配移动/联通/电信手机号码正则表达式小结
中国移动 134.135.136.137.138.139.150.151.152.157.158.159.187.188 ,147(数据卡)
中国联 通130.131.132.155.156.185.186
中国电信133.153.180.189
CDMA 133,153
正 则如下:
复制代码代码如下:
/// 匹配移动手机号
public const string PATTERN_CMCMOBILENUM = @"^1(3[4-9]|5[012789]|8[78])\d{8}$";
/// 匹配电信手机号
public const string PATTERN_CTCMOBILENUM = @"^18[09]\d{8}$";
/// 匹配联通手机号
public const string PATTERN_CUTMOBILENUM = @"^1(3[0-2]|5[56]|8[56])\d{8}$";
/// 匹配CDMA手机号
public const string PATTERN_CDMAMOBILENUM = @"^1[35]3\d{8}$";
“^1(3[4-9]|4[7]|5[012789]|8[2378])\\d{8}$"
"^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"
"^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
第一个是匹配手机号码的
第二个是匹配手机号码
第三个是匹配电子邮箱的。
手机前三个数字。
^1是文章的开头为1 ,3 匹配3 ,4-9匹配4-9 组合是134,135,136,137,138,139
|是或者147 或者150,151,152,157,158,159,或者182,183,187,188开头
\\\d{8}$'
\\d是数字。{8}为8位数字。$结束。
第二个和第一个类似,看懂第一个第二个也没啥好说的。
第三个是@符号前面a-z0-9A-Z,是大小写的字母加数字+是1-多个字符。-杠或者,\\.是匹配一个点
比如llds213. 或者sa24s-
@符号后面基本类似前面
不知道你能否明白?我是手敲的。正则工作后很有用,多看帮助文档。
/** * 判断该手机号码是否是移动手机号段<br> * * @param phone * @return true or false * @throws Exception */ private boolean isMobileNumber(String phone) throws ServiceException { boolean isExist = false; phone = phone.trim(); if (phone == null || phone.length() < 7) { try { throw new Exception("wrong phone length"); } catch (Exception ex) { ex.printStackTrace(); } } String code = phone.substring(0, 7);// 暂时保留2009-01-16 16:30 if (code.startsWith("134") || code.startsWith("135") || code.startsWith("136") || code.startsWith("137") || code.startsWith("138") || code.startsWith("139") || code.startsWith("159") || code.startsWith("158") || code.startsWith("150") || code.startsWith("157") || code.startsWith("151") || code.startsWith("188") || code.startsWith("189")) { isExist = true; } return isExist; }