C中的字符验证

时间:2014-03-13 19:59:23

标签: c validation loops

我想为汽车注册号添加验证。我已将其声明为char,并且必须由yyDnnnn格式化。例如,99D2005。

我可以想象它是直截了当的,它是否像Java中的charAt()方法?

3 个答案:

答案 0 :(得分:1)

不,你不能在C中做到这一点。在C中你可以:

  • 使用正则表达式解析器(请参阅regcomp函数);或

  • 比较各个字符并使用isalphaisdigit

  • 等功能

毫无疑问,还有许多其他方法可以做到这一点,但你建议的不是其中之一。

答案 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(&regex, "^[0-9]{2}[D][0-9]{4}$", REG_EXTENDED);
        if(rc != 0) {
                printf("could not compile regex\n");
                return 1;
        }

        rc = regexec(&regex, "15D1234", 0, NULL, 0);
        if(rc == 0) {
                printf("test 1 pass: match\n");
        } else {
                printf("test 1 fail\n");
        }
        regfree(&regex);
        return 0;
}