温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言字符串中的URL有效性检查

发布时间:2024-08-29 21:13:50 来源:亿速云 阅读:84 作者:小樊 栏目:编程语言

在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(&regex, pattern, REG_EXTENDED);
    if (reti) {
        fprintf(stderr, "Could not compile regex\n");
        return false;
    }

    // 使用正则表达式匹配URL
    reti = regexec(&regex, url, 0, NULL, 0);
    if (!reti) {
        // 匹配成功,URL有效
        regfree(&regex);
        return true;
    } else if (reti == REG_NOMATCH) {
        // 匹配失败,URL无效
        regfree(&regex);
        return false;
    } else {
        // 发生错误
        regerror(reti, &regex, msgbuf, sizeof(msgbuf));
        fprintf(stderr, "Regex match failed: %s\n", msgbuf);
        regfree(&regex);
        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系统上正确处理大小写敏感的正则表达式。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI