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('不是电话号码!')