You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何检测各类链接?现有匹配函数适配问题求修复

修复URL验证函数以支持相对协议链接和分号分隔多URL

原函数无法识别//cdn.shopify.com/...这类相对协议链接,也不支持分号分隔的多URL字符串,以下是修复后的实现:

function isValidUrl(urlString) {
    const pattern = new RegExp(
        '^((' +
            '([a-zA-Z]+:\/\/)|\/\/' + // 支持标准协议或相对协议(//开头)
        ')' +
        '((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|' + // 域名
        '((\d{1,3}\.){3}\d{1,3}))' + // IPv4地址
        '(\:\d+)?(\/[-a-z\d%_.~+]*)*' + // 端口和路径
        '(\?[;&a-z\d%_.~+=-]*)?' + // 查询字符串
        '(\#[-a-z\d_]*)?' + // 锚点
        ')(;\s?\1)*$', // 支持分号分隔的多个URL(可选空格)
        'i'
    );
    return pattern.test(urlString);
}

关键修改点说明:

  • 支持相对协议链接:将原协议部分的([a-zA-Z]+:\/\/)?调整为(([a-zA-Z]+:\/\/)|\/\/)?,允许URL以//开头,适配相对协议的场景。
  • 支持分号分隔多URL:将整个单URL匹配逻辑包裹为分组\1,新增(;\s?\1)*规则,允许后续出现分号(可跟随空格)加重复的URL模式,实现多URL的验证。

测试验证示例:

  • 相对协议链接://cdn.shopify.com/assets/example.js → 返回true
  • 分号分隔多URL:http://www.google.com; //cdn.shopify.com/path → 返回true
  • 原有支持的URL:www.yahoo.com、http://www.google.com → 仍正常返回true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:10:28