我想为汽车注册号添加验证。我已将其声明为char,并且必须由yyDnnnn格式化。例如,99D2005。
我可以想象它是直截了当的,它是否像Java中的charAt()方法?
答案 0 :(得分:1)
不,你不能在C中做到这一点。在C中你可以:
使用正则表达式解析器(请参阅regcomp
函数);或
比较各个字符并使用isalpha
,isdigit
毫无疑问,还有许多其他方法可以做到这一点,但你建议的不是其中之一。
答案 1 :(得分:0)
这不是那么简单。
你需要循环验证每个位置的字符串。像这样:
int i;
char currC;
for(i = 0;i < strlen(carReg);i++) {
currC = tolower(carReg[i]);
if(i < 2 && isalpha(currC)) //continue...
}
答案 2 :(得分:0)
我会使用正则表达式库。以下是涉及POSIX正则表达式的答案的SO链接:Regular expressions in C: examples?
这是一个小例子,展示了我认为你想做的事情(Linux):
#include <regex.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
regex_t regex;
int rc;
rc = regcomp(®ex, "^[0-9]{2}[D][0-9]{4}$", REG_EXTENDED);
if(rc != 0) {
printf("could not compile regex\n");
return 1;
}
rc = regexec(®ex, "15D1234", 0, NULL, 0);
if(rc == 0) {
printf("test 1 pass: match\n");
} else {
printf("test 1 fail\n");
}
regfree(®ex);
return 0;
}