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

Java 11/Android应用:如何验证带端口的合法URL/IP格式?

URL/IP语法合法性校验方案

适用正则表达式

直接使用以下正则表达式,可覆盖你列出的所有合法场景,同时排除非法格式:

String validRegex = "^((http|https|ftp)://)?((([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,})|(([0-9]{1,3}\\.){3}[0-9]{1,3}))(:[0-9]{1,5})?(/.*)?$";

正则规则说明

  • ((http|https|ftp)://)?:可选的协议头,支持http、https、ftp三种协议
  • ([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}:匹配合法域名,要求至少包含一个二级域名(如stackoverflow.com、amazon.co.uk),域名允许包含字母、数字、连字符
  • ([0-9]{1,3}\\.){3}[0-9]{1,3}:匹配语法合法的IP地址,仅校验四段数字的结构,不验证实际IP有效性(如999.999.999.999会被视为合法)
  • (:[0-9]{1,5})?:可选的端口号,支持1-5位数字(符合0-65535的语法范围)
  • (/.*)?:可选的路径部分,允许域名/IP后附带任意格式的路径

校验结果验证

合法示例全部匹配:

  • stackoverflow.com ✅
  • http://stackoverflow.com ✅
  • http://amazon.co.uk ✅
  • https://www.amazon.co.uk ✅
  • ftp://10.1.1.9 ✅
  • 10.1.1.9:1234 ✅
  • http://10.1.1.9:1234/bla ✅

非法示例全部排除:

  • http://bla ❌(缺少合法域名/IP主体)
  • bla ❌(无有效域名结构)
  • --- ❌(无合法字符)
  • 10.9 ❌(IP段数不足)
  • 10.1.1. ❌(IP结尾冗余点)
  • 10.1..1.9 ❌(IP存在空段)

代码使用方式

直接调用myURL.trim().matches(validRegex)即可完成校验,matches方法会自动匹配整个字符串,正则中的^和$确保输入内容完全符合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:25:25