2 回答

TA貢獻(xiàn)1993條經(jīng)驗 獲得超6個贊
因為:
如果給定的基本 URL 或結(jié)果 URL 不是有效的 URL,則會引發(fā) 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貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
在這種情況下,我建議使用正則表達(dá)式根據(jù)輸入字符串拆分 URL。
該模式可以在這里找到:
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
另外,在您的示例字符串中,由于某些 URL 以點(diǎn) (.) 字符結(jié)尾,因此您需要刪除最后一個字符。
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)"/>
添加回答
舉報