QT实现用户注册密码校验逻辑

在这里插入图片描述

bool Register::CheckPwd()
{
    QString nickName = ui->lineEdit_nickName->text();//用户昵称
    QString firstPassWrd = ui->lineEdit_passwd->text();//用户密码
    QString secondPassWrd = ui->lineEdit_confirmPass->text();//确认密码
    QRegExp rx;
    QMessageBox msgBox;
    bool flag = true;
    if(0 == nickName.size())
    {
        ui->textLabel->setText("昵称不能为空!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;
    }
    if(nickName.size() > 21)
    {
        //            warnStr += "昵称长度超过21位;";
        ui->textLabel->setText("昵称长度超过21位!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;
    }
    rx.setPatternSyntax(QRegExp::RegExp);
    //对大小写字母敏感,即区分大小写
    rx.setCaseSensitivity(Qt::CaseSensitive);
    //匹配格式为所有大小写字母和数字组成的字符串,位数不限
    rx.setPattern(QString("^[A-Za-z0-9]+$"));
    if(firstPassWrd.isEmpty())  //检测密码输入框是不是为空
    {
        ui->textLabel->setText("密码不能为空!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;
    }
    else if(!rx.exactMatch(firstPassWrd))
    {
        ui->textLabel->setText("密码只能是数字或字母!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;

    }
    else if(firstPassWrd.size()<6 || firstPassWrd.size()>18)
    {
        ui->textLabel->setText("密码长度范围必须是[6,18]!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;

    }
    if(secondPassWrd.isEmpty())  //检测密码输入框是不是为空
    {
        ui->textLabel->setText("密码不能为空!");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;
    }
    if(0 != firstPassWrd.compare(secondPassWrd) )
    {
        ui->textLabel->setText("两次密码不一致");
        ui->textLabel->setStyleSheet("color: rgb(255, 78, 25);");
        return false;
    }
    return flag;
}

Qt实现身份证合法性校验通常涉及到中国居民身份证号码的验证规则,这些规则包括数字位数、校验码计算等。由于这种校验涉及到正则表达式和特定算法,我们可以利用Qt的QRegExp或自定义函数来完成。 以下是一个简单的步骤概述: 1. **包含必要的库**:首先,在Qt项目中引入所需的正则表达式库(如`<regex>`)。 2. **定义身份证号的正则表达式**:创建一个正则表达式来匹配中国大陆的18位或15位身份证号。例如: ```cpp QRegExp idCardPattern("(\\d{6})(1[89]|20)?(\\d{4})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([0-9Xx]{1})"); ``` 3. **校验方法**:编写一个函数来检查输入的字符串是否匹配该模式,并执行校验码的计算。对于18位身份证,计算第17位校验码;对于15位身份证,不计算最后一位。 ```cpp bool isValidIDCard(QString id) { if (!idCardPattern.exactMatch(id)) return false; // 初步校验长度 // 根据身份证的结构计算校验码,这里仅示例18位身份证的计算 int sum = 0; for (int i = 0; i < 17; ++i) { sum += (i % 2 == 0) ? id[i] - '0' * 2 : id[i] - '0'; } int checkCode = (sum % 11 > 1) ? 11 - sum % 11 : sum % 11; return checkCode == id[id.size() - 1].toInt(); // 检查最终校验码是否一致 } ``` 4. **调用校验函数**:在用户输入身份证号码后,使用`isValidIDCard`函数验证其有效性。 记得这只是一个基础的示例,实际应用可能需要处理更复杂的边界情况,比如出生日期的有效性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值