最推荐用url != null && !url.trim().isEmpty() && url.trim().toLowerCase().startsWith("https://")校验HTTPS协议,兼顾空值安全与大小写不敏感;但仅验证前缀,不保证URL格式合法,高安全场景需结合URI解析。
直接用
是最简单、高效且推荐的方式,但要注意大小写敏感和空值安全。
确认协议前缀是否严格为 "htt
ps
://"
默认区分大小写,而 URL 协议部分在实际使用中通常要求小写。HTTP 规范规定方案(scheme)是不区分大小写的,但 Java 字符串方法不会自动做大小写归一化。因此,若需兼容用户可能输入的
或
,应先转小写再判断:
推荐做法:先调用
更严谨的做法:用正则或
实现忽略大小写的前缀匹配(避免创建新字符串)
简单场景下,只要求用户输入规范,可直接用
并配合前端提示
必须校验空值与空白字符串
用户可能提交 null、空字符串或纯空格,直接调用
会抛出
或返回错误结果:
用
提前防护
建议组合写法:
也可借助 Apache Commons Lang 的
,它自动处理 null 安全
注意:startsWith() 只验证开头,不保证 URL 格式合法
该方法仅检查是否以
开头,无法识别后续是否为有效域名或路径。例如以下字符串都会通过验证:
立即学习
“
Java免费学习笔记(深入)
”;
稿定在线PS
PS软件网页版
下载
(缺少主机名)
(带空格)
(XSS 风险)
如需更强校验,应结合
构造器或
解析,捕获
异常,并进一步检查
是否为
。
一个简洁可用的工具方法示例
(兼顾安全、可读与实用性)
此写法避免了
创建新字符串,也规避了
对 null 的风险,同时长度预检防止
抛异常。
String.startsWith("https://")startsWith()HTTPS://Https://url.trim().toLowerCase().startsWith("https://")regionMatches()url.startsWith("https://")startsWith()NullPointerExceptionObjects.nonNull(url) && !url.trim().isEmpty()url != null && !url.trim().isEmpty() && url.trim().toLowerCase().startsWith("https://")StringUtils.startsWithIgnoreCase(url, "https://")https://"https://""https:// ""https://example.com"java.net.URLjava.net.URIMalformedURLExceptiongetProtocol()"https"public static boolean isHttpsUrl(String url) {
if (url == null || url.trim().isEmpty()) {
return false;
}
String trimmed = url.trim();
return trimmed.length() >= 8 && trimmed.substring(0, 8).equalsIgnoreCase("https://");
}toLowerCase()startsWith()substring()