在 JavaScript 领域,URL 验证方面有了新消息!多年来,人们一直在咒骂 JavaScript 没有一种简便的方法来验证 URL,现在有了一种新方法–URL.canParse()!
URL.canParse("https://www.stefanjudis.com"); // true
URL.canParse("www.stefanjudis.com"); // false
哈利路亚!URL.canParse()
是一种快速判断字符串是否为有效 URL 的方法。但在我们兴奋之前,在撰写本篇文章时,URL.canParse()
并不支持跨浏览器。不过你可以在下面找到最新的浏览器支持信息。
不过,静态方法已经包含在 core-js 中。填充漂亮的 URL 验证一行代码很困难吗?事实证明,不是!
URL.canParse()
依靠与 URL()
构造函数相同的算法来评估有效的 URL。
由于这两种方法都实现了相同的解析器,而且 URL()
目前也得到了很好的支持,因此可以按照一般建议使用构造函数来验证 URL。将 new URL()
放在辅助函数中,检查它是否会抛出异常并将其调用!
function isUrlValid(string) {
try {
new URL(string);
return true;
} catch (err) {
return false;
}
}
isUrlValid("https://www.stefanjudis.com"); // true
isUrlValid("www.stefanjudis.com"); // false
或者,如果您不喜欢 isUrlValid
函数,也可以使用类似于 core-js
的 polyfillURL.canParse()
。
唯一剩下的问题是“什么是有效的 URL?”但我将把这个问题留到下次讨论!因为这是个棘手的问题。