美文网首页
2018-10-23-day18作业

2018-10-23-day18作业

作者: Smr_T | 来源:发表于2018-10-25 17:53 被阅读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'))

    C. “[0 - 9(-)] *\d *”

    相关文章

      网友评论

          本文标题:2018-10-23-day18作业

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