TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
依据
- [code]根据2017年10月份最新的手机号正则进行编码, 正则如下:
- (13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8}
复制代码 [/code]
代码
- [code]# -*- coding: utf-8 -*-
- import random
- def create_phone():
- # 第二位数字
- second = [3, 4, 5, 7, 8][random.randint(0, 4)]
- # 第三位数字
- third = {
- 3: random.randint(0, 9),
- 4: [5, 7, 9][random.randint(0, 2)],
- 5: [i for i in range(10) if i != 4][random.randint(0, 8)],
- 7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)],
- 8: random.randint(0, 9),
- }[second]
- # 最后八位数字
- suffix = random.randint(9999999,100000000)
- # 拼接手机号
- return "1{}{}{}".format(second, third, suffix)
- # 生成手机号
- phone = create_phone()
- print(phone)
复制代码 [/code]
运行结果
- [code]13937342780
- 15835720604
- 14589505530
- ...
复制代码 [/code]
验证 (使用正则验证)
- [code]# -*- coding: utf-8 -*-
- import random
- import re
- def create_phone():
- # 第二位数字
- second = [3, 4, 5, 7, 8][random.randint(0, 4)]
- # 第三位数字
- third = {
- 3: random.randint(0, 9),
- 4: [5, 7, 9][random.randint(0, 2)],
- 5: [i for i in range(10) if i != 4][random.randint(0, 8)],
- 7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)],
- 8: random.randint(0, 9),
- }[second]
- # 最后八位数字
- suffix = random.randint(9999999,100000000)
- # 拼接手机号
- return "1{}{}{}".format(second, third, suffix)
- # 生成手机号
- phone = create_phone()
- print(phone)
- # 正则
- reg = re.compile("(13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8}")
- print("Test passed!" if reg.match(phone) else "Test failed!")
复制代码 [/code]
验证结果
- [code]18662182464
- Test passed!
- 15896505277
- Test passed!
- 14952715286
- Test passed!
- ...
复制代码 [/code]
|
|