2019-01-15 day17 作业

1. 写一个正则表达式判断一个字符串是否是ip地址

规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255

255.189.10.37 正确

256.189.89.9 错误

import re
from re import fullmatch
"""
255
1 - 9 [1-9]
10 - 99   [1-9]\d
100 - 199   1\d\d
200 - 249    2[0-4]\d
250 - 255   25[0-5]
"""
re_str = r'((([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]|[1-    9]\d|1\d\d|2[0-4]\d|25[0-5]))'
result = fullmatch(re_str, '255.189.10.37')
result1 = fullmatch(re_str,'256.189.89.9 ')
print(result)
print(result1)

2. 计算一个字符串中所有的数字的和

例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5

import re
from re import fullmatch
"""
90  -   [1-9]\d*\.?\d*
78  -   
12.5    -   
"""
sum = 0
re_str = r'[1-9]\d*\.?\d*'
result = re.findall(re_str, 'hello90abc 78sjh12.5')
for num in result:
    sum += float(num)
print(sum)

3. 验证输入的内容只能是汉字

re_str = r'([\u4e00-\u9fa5])'
result = fullmatch(re_str, input('请输入一个字符:'))
if result != 0:
    print('是汉字!')
else:
    print('不是汉字!')

4. 电话号码的验证

中国移动号段:182、183、184、187、188、
中国联通号段:185、186
中国电信号段: 180 、181 、
130 131 132   133 134 135 136、137、138、139
145   147
50 51 52 53 55 56 57 58 59
166
71 73 76 77 78
81-88
re_str = r'13\d{8}|14[57]\d{8}|15[123567890]\d{8}|166\d{8}|17[13678]{8}|18[1-8]{8}'
result = fullmatch(re_str,input('请输入一个电话号码:'))
print(result)
if result != 0:
    print('是电话号码!')
else:
    print('不是电话号码!')

你可能感兴趣的:(2019-01-15 day17 作业)