You need to enable JavaScript to run this app. Python中无需正则表达式仅校验HTTPS URL的方法与模块问询
优惠活动
大模型
产品
解决方案
定价
更多

Python中无需正则表达式仅校验HTTPS URL的方法与模块问询

仅校验HTTPS协议URL的Python实现方案

完全不需要专门寻找带协议过滤功能的第三方模块,基于现有成熟工具补充一层硬协议判断即可实现需求,全程不需要手写正则,也能满足遇到非HTTPS协议URL就抛出错误的要求。

方案核心思路

把校验流程拆为两个独立步骤,解决通用URL校验工具不区分协议的问题:

  • 第一步:借助成熟的URL解析/校验工具判断输入内容是否为结构合法的URL
  • 第二步:单独提取URL的协议字段,强制要求其值严格等于https,不满足则直接抛出错误

实现方式

1. 纯标准库零依赖实现

直接使用Python内置的urllib.parse模块完成解析和校验,不需要安装任何第三方包:

from urllib.parse import urlparse

def validate_https_url(input_url: str):
    parsed_url = urlparse(input_url)
    # 校验协议是否为HTTPS
    if parsed_url.scheme != "https":
        raise ValueError(f"仅支持HTTPS协议URL,当前输入协议为:{parsed_url.scheme or '未识别'}")
    # 校验是否存在有效域名,避免无结构的普通字符串被误判
    if not parsed_url.netloc:
        raise ValueError("输入内容不满足合法URL结构,缺少有效域名部分")
    return parsed_url

这个实现的校验效果:

  • 输入http://test.com会直接抛出协议不匹配的错误
  • 输入ftp://test.com会直接抛出协议不匹配的错误
  • 输入https://test.com/path会正常通过校验
  • 输入普通无结构字符串比如test123会抛出URL结构非法的错误

2. 复用现有validators模块的实现

如果你已经在使用validator-collection第三方库,不需要更换工具,只需要在通用校验的基础上补充HTTPS协议的判断即可:

import validators
from urllib.parse import urlparse

def validate_https_url(input_url: str):
    # 先复用第三方库完成通用URL合法性校验
    is_valid = validators.url.url(input_url, public=False)
    if not is_valid:
        raise ValueError("输入不是结构合法的URL")
    # 补充HTTPS协议的强制校验
    parsed_url = urlparse(input_url)
    if parsed_url.scheme != "https":
        raise ValueError("仅接受HTTPS协议的URL,不支持其他协议类型")

注意事项

  • 校验协议时必须使用urlparse解析后的scheme字段值做判断,不要手动匹配字符串里的https://子串,避免出现https-example.com这类拼写错误的内容被误判为合法
  • 如果需要过滤内网/私有域名,只需要把调用validators.url.url时的public=False参数改为public=True即可,不影响HTTPS协议的校验逻辑
  • 整个流程没有手写正则的环节,所有结构合法性的判断都由经过长期验证的成熟工具完成,漏判风险远低于自写正则

内容的提问来源于stack exchange,提问作者ashakshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 22:24:11