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);
}
전체 문자열을 영숫자로 만들려면 정규식에 시작 및 끝 앵커를 포함해야합니다.
"^[a-zA-z0-9]{2,8}$"
원래 정규식과 일치하는 문자열 끝에 4 개의 영숫자가 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다