在C编程中检查字符串是否都是正则表达式的字母数字

时间:2014-07-16 05:58:10

标签: c regex alphanumeric

我想在C中检查字符串是否只包含字母数字字符。我不想使用isalnum函数。为什么下面的代码不能正常工作?

int main()
{
    printf("test regular expression\n");
    int retval = 0;
    regex_t re;
    char line[8] = "4a.zCCb";
    char msgbuf[100];
    if (regcomp(&re,"[a-zA-z0-9]{2,8}", REG_EXTENDED) != 0)
    {
        fprintf(stderr, "Failed to compile regex '%s'\n", tofind);
        return EXIT_FAILURE;
    }
    if ((retval = regexec(&re, line, 0, NULL, 0)) == 0)
        printf("Match : %s\n", line);
    else  if (retval == REG_NOMATCH)
        printf("does not match : %s\n", line);
    else {
        regerror(retval, &re, msgbuf, sizeof(msgbuf));
        fprintf(stderr, "Regex match failed: %s\n", msgbuf);
        exit(1);
    }
    regfree(&re);
}

2 个答案:

答案 0 :(得分:1)

如果您希望整个字符串是字母数字,则需要在正则表达式中包含开始和结束锚点:

"^[a-zA-z0-9]{2,8}$"

目前,字符串末尾有4个字母数字,与原始正则表达式匹配。

答案 1 :(得分:0)

尝试使用\ w *匹配所有单词字符。