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

正则匹配前置精确文本或空值的域名白名单校验需求

适配精确test-或空值的域名正则解决方案

没问题,我来帮你调整正则表达式,完美适配你需要匹配xxx.test-testDomain.com这类域名,同时保留原有的子域名和多后缀匹配能力。

核心修改思路

你原来的正则有两个关键问题需要修正,同时要加入精确匹配test-或空值的逻辑:

  1. 未转义的点:正则里的.默认匹配任意字符,必须转义成\.才能精确匹配域名中的分隔点;
  2. 加入可选的test-前缀:用(test-)?来实现“精确匹配test-或者完全不出现”的需求,?表示前面的内容出现0次或1次,刚好对应空值或目标文本两种情况。

最终正则表达式

^([a-z0-9]*\.)*((test-)?testDomain)\.(com|cn|local)$

正则细节说明

  • ^ 和 $:锚定字符串的开头和结尾,避免部分匹配(比如不会误匹配abc.xxx.testDomain.com.xyz这类带多余后缀的域名);
  • ([a-z0-9]*\.)*:匹配任意层级的子域名(0级、1级、多级都支持,比如空、www.、xxx.yyy.);
  • (test-)?testDomain:核心匹配部分,精准匹配testDomain或者test-testDomain两种主域形式;
  • \.(com|cn|local):精确匹配指定的后缀,转义后的点确保只匹配域名中的分隔点。

匹配示例(符合要求的域名)

  • www.testDomain.com
  • xxx.test-testDomain.com
  • yyy.xxx.testDomain.cn
  • test-testDomain.local

不匹配示例(不符合要求的域名)

  • xxx.tes-testDomain.com(不是精确的test-前缀)
  • www.testDomain.org(后缀不在允许列表内)
  • xxx.testDomaincom(缺少域名分隔点)

保留原分组结构的版本

如果你需要保留原来正则的分组逻辑(比如单独捕获子域部分),可以用这个版本:

^([a-z0-9]*\.)?([a-z0-9]*\.)?(test-)?testDomain\.(com|cn|local)$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:03