首先说下基本的规则:
1、中国手机号是1开头的,由中国移动、电信、联通来负责运营不同的号码段。
2、目前新增了虚拟运营商,号码段是170开头的。
3、各个运营商有专门的上网卡,这种卡号只能上网,所以不会出现在业务中。
规则如下:
中国电信号段
133、149、153、173、177、180、181、189、199
中国联通号段
130、131、132、145、155、156、166、171、175、176、185、186、166
中国移动号段
134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、198
其他号段
14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147等等。
虚拟运营商
电信:1700、1701、1702
移动:1703、1705、1706
联通:1704、1707、1708、1709、171
卫星通信:1349
有了这些准备就好办了,算法如下
private static string[] telStarts = "133,149,153,173,177,180,181,189,199,130,131,132,145,155,156,166,171,175,176,185,186,166,134,135,136,137,138,139,147,150,151,152,157,158,159,172,178,182,183,184,187,188,198,170".Split(','); /// <summary> /// 随机生成电话号码 /// </summary> /// <returns></returns> public static string getRandomTel() { int index = RandHelper.Next(0, telStarts.Length - 1); string first = telStarts[index]; string second = (RandHelper.Next(100, 888) + 10000).ToString().Substring(1); string thrid = (RandHelper.Next(1, 9100) + 10000).ToString().Substring(1); return first + second + thrid; }
调用如下:
string mobile=getRandomTel();
此算法算出来的手机号并非完全正确,因为有些手机号第四位并非0-9,可能有些数字是没有的,如果在打码使用的场景下是没有问题的,比如158****2846,这种显示的话,就完全正确了。
留下您的脚步
最近评论