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
相关产品推荐
相关产品推荐

