您好,登錄后才能下訂單哦!
在C語言中,檢查一個字符串中的URL有效性可以通過正則表達式和字符串操作來實現
#include<stdio.h>
#include <stdbool.h>
#include<string.h>
#include<regex.h>
bool is_valid_url(const char *url) {
// 定義一個正則表達式,用于匹配有效的URL
const char *pattern = "^(http|https)://[a-zA-Z0-9-._]+\\.[a-zA-Z]{2,}$";
regex_t regex;
int reti;
char msgbuf[100];
// 編譯正則表達式
reti = regcomp(®ex, pattern, REG_EXTENDED);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
return false;
}
// 使用正則表達式匹配URL
reti = regexec(®ex, url, 0, NULL, 0);
if (!reti) {
// 匹配成功,URL有效
regfree(®ex);
return true;
} else if (reti == REG_NOMATCH) {
// 匹配失敗,URL無效
regfree(®ex);
return false;
} else {
// 發生錯誤
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
regfree(®ex);
return false;
}
}
int main() {
const char *url1 = "https://www.example.com";
const char *url2 = "not_a_valid_url";
printf("URL 1: %s, valid: %s\n", url1, is_valid_url(url1) ? "true" : "false");
printf("URL 2: %s, valid: %s\n", url2, is_valid_url(url2) ? "true" : "false");
return 0;
}
這個示例中,我們定義了一個名為is_valid_url
的函數,該函數接受一個字符串參數url
。我們使用正則表達式^(http|https)://[a-zA-Z0-9-._]+\\.[a-zA-Z]{2,}$
來匹配有效的URL。然后,我們使用regcomp
函數編譯正則表達式,并使用regexec
函數執行匹配。如果匹配成功,說明URL有效,返回true
;否則,返回false
。
請注意,這個示例僅適用于Linux系統。如果你使用的是Windows系統,你需要包含<windows.h>
頭文件,并使用_snprintf
函數替換snprintf
函數。此外,你還需要將REG_EXTENDED
替換為REG_EXTENDED | REG_ICASE
,以便在Windows系統上正確處理大小寫敏感的正則表達式。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。