美文网首页
day18-课后作业

day18-课后作业

作者: 麻瓜_1fb4 | 来源:发表于2018-10-27 11:21 被阅读0次

    import re

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

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

    ####### 255.189.10.37 正确
    ####### 256.189.89.9 错误

    """
    重点:用正则匹配到一个数字是0-255
    0-9   \d
    10-99  [1-9]\d
    
    100-255:  
    100-199: 1\d{2}
    200-249: 2[0-4]\d
    250-255: 25[0-5]
    """
    # re_str = r'\d|[1-9]\d|(1\d{2}|2[0-4]\d|25[0-5])'  # 匹配 0-255
    re_str = r'((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])'
    print(re.fullmatch(re_str, '3.89.87.234'))
    

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

    例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5
    """
    整数:\d+
    小数:\d+\.\d+
    """
    # re_str = r'\d+\.\d+|\d+'
    re_str =  r'\d+\.?\d*'
    numbers = re.findall(re_str, 'he8l12.lo90abc 78sjh12.5')
    print(numbers)
    sum1 = 0
    for num in numbers:
        sum1 += float(num)
    print(sum1)
    

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

    # re_str = r'[一-龥]+'
    re_str = r'[\u4e00-\u9fa5]+'
    if re.fullmatch(re_str, '床前明月光疑似地上霜举头望明月低头思故乡'):
        print('输入正确!')
    else:
        print('输入有误!')
    

    4.电话号码的验证

    """
    13\d
    15[0-3]  15[5-9]
    17[6-8]  
    18[0-9]
    """
    re_str = r'1(3\d|5[0-35-9]|7[6-8]|8\d)\d{8}'
    num1 = '17841264795'
    print(re.fullmatch(re_str, num1))
    

    5.简单的身份证号的验证`

    """
    前6位: 数字
    8位:年月日
    年:1910 - 2018
    1910-1999: 19[1-9]\d
    2000-2009:  200\d
    2010-2018:  201[0-8]
    
    月:01-12
    01-09: 0[1-9]
    10-12: 1[0-2]
    
    日:01-31
    01-09: 0[1-9]
    10-29: [1-2]\d
    30-31:3[01]
    
    3位:数字
    最后一位:数字或者X
    """
    re_str = r'\d{6}(19[1-9]\d|200\d|201[0-8])(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(\d{3})(\d|X)'
    
    print(re.fullmatch(re_str, '500234200003126323'))
    

    相关文章

      网友评论

          本文标题:day18-课后作业

          本文链接:https://www.haomeiwen.com/subject/rgzxtqtx.html