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

如何编写匹配tcp://serverName:port/SearchServer的Regex校验规则

原有正则的错误点

  • 锚点用法错误:^和$是匹配整个字符串的起止标识,只能放在正则的首尾位置,你把它们放在正则中间,会被识别为普通字符要求匹配,直接导致正常URL无法命中规则。
  • 量词使用错误:?表示匹配0次或1次,你用来匹配主机名、端口这类长度肯定大于1的内容,完全不符合实际业务场景。
  • 分隔符逻辑混乱:主机名和端口之间的:被你错误包裹在/^:/$规则中,额外引入了不需要匹配的/字符,也没有正确匹配冒号本身。
  • 路径匹配逻辑错误:固定路径/SearchServer的匹配规则被你错误添加了冗余的/和锚点,完全无法匹配正常路径。

正确的校验规则

你要匹配的tcp://serverName:port/SearchServer格式,按Java语法编写的正则如下,可根据是否要求强制携带tcp://前缀二选一:

// 要求必须携带tcp://前缀的版本
String regex = "^tcp://[A-Za-z0-9-]+:(\\d{1,5})/SearchServer$";

// 允许省略tcp://前缀的版本
String regex = "^(tcp://)?[A-Za-z0-9-]+:(\\d{1,5})/SearchServer$";

规则说明:

  • ^匹配字符串开头,避免URL前出现多余字符
  • (tcp://)?表示tcp://前缀可选,去掉?即要求必须携带前缀
  • [A-Za-z0-9-]+匹配主机名,支持字母、数字、短横线,+要求至少有1个字符
  • :匹配主机名和端口之间的固定分隔符
  • \d{1,5}匹配1-5位数字组成的端口,若需要严格校验端口范围在0-65535区间,可把这部分替换为(0|[1-9]\\d{0,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])
  • /SearchServer匹配固定的后缀路径
  • $匹配字符串结尾,避免URL后出现多余字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:45:08