本文实例讲述了Python实现随机生成手机号及正则验证手机号的方法。分享给大家供大家参考,具体如下:
依据
根据2017年10月份最新的手机号正则进行编码, 正则如下:(13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8}
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# -*- 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)
|
运行结果
13937342780
15835720604
14589505530
...
验证 (使用正则验证)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# -*- 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!" )
|
验证结果
18662182464
Test passed!15896505277
Test passed!14952715286
Test passed!...
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/xiaobuding007/article/details/78726833