You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何校验前4位字符后6位数字格式的ID,输入错误提示重输

ID格式校验实现方案(C++)

校验规则明确

需要校验的ID需同时满足三个条件:

  • 总长度固定为10位
  • 前4位为英文字母(可根据业务需求指定是否仅限大写)
  • 后6位为0-9的阿拉伯数字
    只要任意条件不满足,就提示用户重新输入,直到输入符合要求为止。

完整实现代码

方案1:逐位判断(无需引入额外库,兼容性好)

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

bool isIdValid(const string& id) {
    // 校验总长度
    if (id.size() != 10) {
        return false;
    }
    // 校验前4位为字母,若要求仅大写可增加isupper判断
    for (int i = 0; i < 4; ++i) {
        if (!isalpha(id[i])) {
            return false;
        }
    }
    // 校验后6位为数字
    for (int i = 4; i < 10; ++i) {
        if (!isdigit(id[i])) {
            return false;
        }
    }
    return true;
}

int main() {
    string id;
    while (true) {
        cout << "请输入ID: ";
        cin >> id;
        if (isIdValid(id)) {
            cout << "ID格式校验通过" << endl;
            break;
        } else {
            cout << "ID格式不符合要求,请重新输入!要求:前4位字母+后6位数字,总长度10位,示例格式:UEEW123456" << endl;
        }
    }
    // 后续业务逻辑可在此处编写
    return 0;
}

方案2:正则判断(代码更简洁)

如果可以引入正则库,校验函数可以替换为以下实现:

#include <regex>

bool isIdValid(const string& id) {
    // 正则规则说明:^匹配字符串开头,[A-Za-z]{4}匹配4位任意大小写字母,[0-9]{6}匹配6位数字,$匹配字符串结尾
    // 若要求前4位仅大写,可把[A-Za-z]修改为[A-Z]
    regex idRule("^[A-Za-z]{4}[0-9]{6}$");
    return regex_match(id, idRule);
}

补充说明

如果业务场景允许ID中包含空格,可把读取输入的cin >> id替换为getline(cin, id)读取整行内容即可。

内容的提问来源于stack exchange,提问作者Nino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:54:03