[英]Why regex always returns 1?
以下函数检查变量名称是否以字母开头,并且可能具有字母/数字的前面的字符。 无论输入是什么,为什么返回值始终为1?
#include <regex.h>
#include <stdio.h>
int validate_var(char *str)
{
regex_t reg;
regcomp(®, "^[a-zA-Z]+[a-zA-Z0-9]*$", 0);
int r = regexec(®, str, 0, NULL, 0);
regfree(®);
return r;
}
int main() {
printf("%d\n", validate_var("abc")); // Reports 1, This makes sense
printf("%d\n", validate_var("17")); // Reports 1, This doesn't make sense
}
您正在使用锚点( ^
和$
),但不通过将REG_EXTENDED
传递给regcomp()
来启用扩展语法。 请参见手册页 。
您应该检查所有返回值,由于语法使用错误,应该在某处报告失败。
请注意,非零意味着失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.