2 回答
TA贡献1993条经验 获得超5个赞
因为:
如果给定的基本 URL 或结果 URL 不是有效的 URL,则会引发 JavaScript TypeError 异常。
function isURL(me){
try {
new URL(me);
console.log(me + " is a valid URL!");
return true
}
catch (e){
console.log(e.message);
return false
}
}
console.log(isURL("/home/dev/infos"))
console.log(isURL("https://website.com"))
console.log(isURL(88))
console.log(isURL("Hello_World!"))
<input onKeyDown="isURL(this.value)">
TA贡献1831条经验 获得超10个赞
在这种情况下,我建议使用正则表达式根据输入字符串拆分 URL。
该模式可以在这里找到:
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
另外,在您的示例字符串中,由于某些 URL 以点 (.) 字符结尾,因此您需要删除最后一个字符。
function onKeyDown(event) {
var stringWithURL = "Hello, World! https://www.google.com. I'm delighted to be a part of \"https://amazon.com\". Come again";
if (event.keyCode === 32 || event.keyCode === 13) { // Space bar and enter keys
let pattern = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g
let urls = stringWithURL.match(pattern);
for (let url of urls) {
if (url.endsWith('.')) {
// Removing the last character if the URL ends with a dot
url = url.slice(0, url.length - 1);
}
// Parsing to URL
url = new URL(url);
if(url.protocol === "http:" || url.protocol === "https:") {
console.log(url);
}
}
}
}
<input type="text" onKeyDown="onKeyDown(event)"/>
添加回答
举报