我需要驗證字符串。該字符串的格式類似於「V02:01:02:03:04」。
我所試圖做的:
1)我要檢查正確的長度提供
2)第一個字符是「V」
3)所有其他字符是2個字母數字和由冒號和分離正確的位置。
4)沒有空白標籤et.c
4)不能相信任何更多的驗證。驗證字符串按數字和冒號
我做了什麼至今
1)功能已經很容易地檢查LEN和拳頭字符無法驗證後續字符後先不包含字母或空間。但我有點卡住瞭如何檢查每個冒號後的冒號位置和2個字母的字符。
以下是我的嘗試。
int firmwareVerLen = 15;
const std::string input = "V02:01:02:03:04"; // this is the format string user will input with changes only in digits.
bool validateInput(const std::string& input)
{
typedef std::string::size_type stringSize;
bool result = true ;
if(firmwareVerLen != (int)input.size())
{
std::cout <<" len failed" << std::endl;
result = false ;
}
if(true == result)
{
if(input.find_first_of('V', 0))
{
std::cout <<" The First Character is not 'V' " << std::endl;
result = false ;
}
}
if(true == result)
{
for(stringSize i = 1 ; i!= input.size(); ++ i)
{
if(isspace(input[i]))
{
result = false;
break;
}
if(isalpha(input[i]))
{
cout<<" alpha found ";
result = false;
break;
}
//how to check further that characters are digits and are correctly separated by colon
}
}
return result;
}
老實說,我可能會遍歷字符串,檢查每個字符與當前驗證列表中字符串的位置。 – chris 2012-07-12 16:13:23
正則表達式? 'V([0-9] {2}:){5}'......我想。 – hmjd 2012-07-12 16:15:28
@hmjd,哇,現在你提到它... – chris 2012-07-12 16:16:30