用户注册验证--课后程序(Python程序开发案例教程-黑马程序员编著-第11章-课后作业)

实例3:用户注册验证

在很多网站上都有注册功能,用户在使用注册功能时,需要遵守网站的注册规则。例如,一个网站的用户注册页面中包含用户名、密码、手机号等信息,其中用户名规则为:长度为6~10个字符、以汉字、字母或下划线开头;密码规则为:长度为6~10个字符、必须以字母开头、包含字母、数字、下划线;手机号规则为:中国大陆手机号码。若用户输入的注册信息格式有误,系统会对用户进行提示。

本实例要求编写程序,模拟实现用户注册功能。

实例目标

  1. 掌握正则表达式的基本语法规则
  2. 掌握re模块中compile()方法的使用
  3. 掌握re模块中findall()方法的使用

实例分析

用户注册信息可以使用正则表达式实现。按用户注册页面的组成部分,可分为以下三种情况:

  1. 用户名对应的正则表达式为^[\u4E00-\u9FA5A-Za-z0-9_]{6,10}$。
  2. 密码对应的正则表达式为^[a-zA-Z]\w{5,9}$.
  3. 手机号对应的正则表达式为^1[03456789]\d{9}$

代码实现

import re

def user_registration():

    print("注册提示:")

    print("账号长度为6~10个字符,可使用汉字、字母、数字、下滑线开头\n"

          "密码长度为6~10个字符,包含大小写字母及下划线,需以字母开头\n"

          "手机号为中国大陆手机号")

    user_name = input("请输入账号:")

    user_pwd = input("请输入密码:")

    user_phone_num = input("请输手机号:")

    while True:

        # 用户名长度为6~10个字符,可包含汉字、大小写字母和下划线

        reg_user = re.compile(r"^[\u4E00-\u9FA5A-Za-z0-9_]{6,10}$")

        # 密码长度为6~10个字符,必须以字母开头,包含字母、数字、下划线

        reg_pwd = re.compile(r"^[a-zA-Z]\w{5,9}$")

        # 手机号码匹配规则

        reg_phone = re.compile(r'^1[03456789]\d{9}$')

        if re.findall(reg_user, user_name):

            if re.findall(reg_pwd, user_pwd):

                if re.findall(reg_phone, user_phone_num):

                    print("注册成功")

                    break

                else:

                    print("手机号码格式不正确")

                    user_phone_num = input("请重新输入手机号:")

            else:

                user_pwd = input("请重新输入密码:")

        else:

            user_name = input("请重新输入账号:")

if __name__ == '__main__':

    user_registration()

以上代码定义了一个函数uses_register(),该函数中首先打印注册提示信息,并接收用户输入的用户名、密码、手机号,然后将正则表达式进行预编译成reg_user、reg_pwd和reg_phone对象,使用if-else语句判断用户输入的内容是否符合规则:若符合规则,则输出“注册成功”,否则要求用户重新输入符合规则的内容。

代码测试

运行程序,输入符合规则的内容的结果如下:

注册提示:

账号长度为6~10个字符,可使用汉字、字母、数字、下滑线开头

密码长度为6~10个字符,包含大小写字母及下划线,需以字母开头

手机号为中国大陆手机号

请输入账号:_itcast

请输入密码:test123

请输手机号:15732622380

注册成功

运行代码,输入不符合规则的内容的结果如下:

注册提示:

账号长度为6~10个字符,可使用汉字、字母、数字、下滑线开头

密码长度为6~10个字符,包含大小写字母及下划线,需以字母开头

手机号为中国大陆手机号

请输入账号:test_python

请输入密码:python123

请输手机号:15732622380

请重新输入账号:

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaozhima-dun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值