簡體   English   中英

為什么正則表達式總是返回1?

[英]Why regex always returns 1?

以下函數檢查變量名稱是否以字母開頭,並且可能具有字母/數字的前面的字符。 無論輸入是什么,為什么返回值始終為1?

#include <regex.h>
#include <stdio.h>

int validate_var(char *str)
{
    regex_t reg;
    regcomp(&reg, "^[a-zA-Z]+[a-zA-Z0-9]*$", 0);
    int r = regexec(&reg, str, 0, NULL, 0);
    regfree(&reg);

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM