homework_day16_RegularExpression

利用正则表达式完成下面的操作:

from re import fullmatch, findall, sub

1.用户名匹配

​ 要求:

​ 1.用户名只能包含数字 字母 下划线

​ 2.不能以数字开头 

​ 3.⻓度在 6 到 16 位范围内
def match_name(name_str):
    reg = '[a-zA-Z_][\da-zA-Z_]{5,15}'
    return True if fullmatch(reg, name_str) else False
  1. 密码匹配

    ​ 要求:

    ​ 1.不能包含!@#¥%^&*这些特殊符号

    ​ 2.必须以字母开头

    ​ 3.⻓度在 6 到 12 位范围内

def match_pswd(password_str):
    reg = '[a-zA-Z][^!@#¥%^&*]{5,11}'
    return True if fullmatch(reg, password_str) else False
  1. ipv4 格式的 ip 地址匹配
    提示: IP地址的范围是 0.0.0.0 - 255.255.255.255
def match_ipv4(ip_str):
    reg = '(25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[1-9]?[0-9]\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])'
    return True if fullmatch(reg, ip_str) else False
  1. 提取用户输入数据中的数值 (数值包括正负数 还包括整数和小数在内) 并求和
例如:“-3.14good87nice19bye” =====> -3.14 + 87 + 19 = 102.86
def reg_sum(data_str):
    reg = '-?\d+\.?\d*'
    return sum([float(num) for num in findall(reg, data_str)])
  1. 验证输入内容只能是汉字
def match_chn(data_str):
    reg = '[\u4e00-\u9fa5]+'
    return True if fullmatch(reg, data_str) else False
  1. 匹配整数或者小数(包括正数和负数)
def match_num(num_str):
    reg = '-?([1-9][0-9]+|\d)(\.\d*)?'
    return True if fullmatch(reg, num_str) else False
  1. 使用正则表达式获取字符串中所有的日期信息 匹配年月日日期 格式:2018-12-6

注意年的范围是1~ 9999, 月的范围是1~ 12, 日的范围是1~ 30或者1~ 31或者1~ 29(不考虑闰年)

def find_date(data_str):
    reg = '([1-9][0-9]{,3}-([3578]|[1][02]?)-([12][0-9]|3[01]|[1-9]))'\
    '|([1-9][0-9]{,3}-([469]|11)-([12][0-9]|30|[1-9]))'\
    '|([1-9][0-9]{,3}-(2)-([12][0-9]|[1-9]))'
    return [date for info in findall(reg, data_str) for date in info if '-' in date]
  1. 替换字符串中的不良内容:将输入的内容中的不良内容全部替换成*(参考王者荣耀聊天要求)
def change_bad(data_str):
    reg = '王*者+荣+耀*'
    return sub(reg, '*', data_str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值