JavaScript 中有没有一种方法可以检查字符串是否为 URL?
正则表达式被排除在外,因为 URL 很可能是这样写的 stackoverflow
;也就是说,它可能没有 .com
, www
或 http
。
原文由 Bruno 发布,翻译遵循 CC BY-SA 4.0 许可协议
JavaScript 中有没有一种方法可以检查字符串是否为 URL?
正则表达式被排除在外,因为 URL 很可能是这样写的 stackoverflow
;也就是说,它可能没有 .com
, www
或 http
。
原文由 Bruno 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想检查一个字符串是否 是有效的 HTTP URL ,你可以使用 URL
构造函数(它会抛出格式错误的字符串):
function isValidHttpUrl(string) {
let url;
try {
url = new URL(string);
} catch (_) {
return false;
}
return url.protocol === "http:" || url.protocol === "https:";
}
console.log("http://example.com: "+isValidHttpUrl("https://example.com"));
console.log("example.com: "+isValidHttpUrl("example.com"));
注意: 根据 RFC 3886 ,URL 必须以方案开头(不限于 http/https),例如:
www.example.com
是无效的 URL(缺少方案)javascript:void(0)
是有效的 URL,虽然不是 HTTP URLhttp://..
是主机为 ..
(是否解析取决于您的 DNS)https://example..com
是有效的URL,同上原文由 Pavlo 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
有答案的相关问题
或者来自 Devshed 的正则表达式: