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('不是电话号码!')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,191评论 0 9
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,659评论 2 56
  • 一、正则表达式语法 正则表达式是用匹配或者描述字符串的工具。 用处:a.判断字符串是否满足某个条件---判断输入的...
    魅影_0d2e阅读 610评论 0 0
  • 忘了从哪收集的资料了,放这儿,以备不时之需。 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{...
    study_monkey阅读 1,435评论 0 7
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 628评论 0 2