国内手机号码的规则(来自百度百科):
前3位为网络识别号;第4-7位为地区编码;第8-11位为用户号码。
移动:
1340-1348、135、136、137、138、139、150、151、152、157、158、159、182、183、184、187、188、147、178
联通:
130、131、132、155、156、145、185、186、176、175
电信:
133、153、180、181、189、177、173、149
虚拟运营商:
170[1700/1701/1702(电信)、1703/1705/1706(移动)、1704/1707/1708/1709(联通)、171(联通)
请问用C#如何写出最准确的正则表达式?
/// <summary> /// 判断输入的字符串是否是一个合法的手机号 /// </summary> /// <param name="input"></param> /// <returns></returns> public static bool IsMobilePhone(string input) { Regex regex = new Regex("^1[34578]\\d{9}$"); return regex.IsMatch(input); }
我们公司开始写的发现跟不上时代,就补加了第二位 5/7/8,感觉运营商变来变去,很难写太完整,都是出了问题再加
没有最准确的,楼上兄弟所说,运营商会变的
这个好办啊 接入短信验证码或者语音验证码就ok 能打通或者能接收到验证码就是对的 否则 ,,,
当然 成本高了些
这个是联通的正则:
(1((?:(3[0-2]))|(?:(45))|(?:([5|7|8][5-6]))))(\d{8})
其他的类似。
可以将正则写在配置文件或者数据库中,这样有新增也没事的。
我的号码是199开头的怎么破?