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

如何编写符合指定规则的自定义合法URL正则表达式

正则问题排查与修复方案

原有正则的问题梳理

  • 否定前瞻逻辑错误:将(?!http|https)的位置写得完全错位,还错误加入了:\/\/匹配片段,直接违背「不能以http/https开头」的核心要求
  • www前缀匹配逻辑错误:(www\.?)的写法仅表示www后可以可选带点,没有将整个www.作为可选前缀处理
  • 域名主体规则漏洞:未限制中间仅允许出现字母、数字、连字符、点四种字符,也没有避免连字符出现在各级域名的首尾
  • 顶级域匹配错误:[^\s]{2,}会匹配所有非空白字符,包括@、$、_等禁止的特殊字符,也没有限制顶级域必须在字符串结尾,会放过结尾带非法字符的内容

正确正则表达式

/^(?:www\.)?(?:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}(?:\.[a-zA-Z]{2,})?$/gi

规则说明

  • ^ 匹配字符串开头,天然过滤所有以http/https等非域名开头的内容
  • (?:www\.)? 非捕获组,匹配可选的www.前缀,满足可带可不带www的要求
  • (?:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*\.)+ 匹配各级域名主体:每级域名只能以字母数字开头结尾,中间可以带连字符,末尾带点,支持多级域名配置
  • [a-zA-Z]{2,}(?:\.[a-zA-Z]{2,})? 匹配顶级域,支持.com、.io这类单段顶级域,也支持.co.in这类双段顶级域
  • $ 匹配字符串结尾,避免顶级域后出现其他非法字符

验证效果

所有你提供的合法示例均可正常匹配,所有非法示例均会被拦截:带http/https开头的内容会被开头匹配规则直接拦截,带_、@等特殊字符的内容会被域名主体规则拦截,结尾带特殊字符、连字符结尾或者没有合法顶级域的内容会被结尾规则拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:06:08