修复JavaScript中的URL

修复JavaScript中的URL,javascript,url,Javascript,Url,我的web应用程序有一个输入字段,用户可以在其中输入指向其网站的链接。通常,他们输入无效的URL,如e-918kiss.com。我想自动把它修好 但是URL可以指向任何域名 我尝试使用标记解析URL,但它只是将其附加为当前源的本地路径: const elem = document.createElement('a'); a.href = 'Twitter.com/mhluska'; console.log(a.href); // "http://e-918kiss.com" 我研究了一些URL

我的web应用程序有一个输入字段,用户可以在其中输入指向其网站的链接。通常,他们输入无效的URL,如e-918kiss.com。我想自动把它修好

但是URL可以指向任何域名

我尝试使用标记解析URL,但它只是将其附加为当前源的本地路径:

const elem = document.createElement('a');
a.href = 'Twitter.com/mhluska';
console.log(a.href); // "http://e-918kiss.com"
我研究了一些URL解析库,但它们通常只对无效URL抛出错误。包括本机URL API

有没有一种简单的方法可以尝试从用户可能输入的任何垃圾创建有效链接?

Regex是您的朋友

至少要知道用户域的TLD。您不能尝试猜测随机字符串的TLD

然后,您应该检查输入值是否与有效url匹配,如果不适用于缺少的“https”字符串

PS:建议域使用SSL(https)作为协议参考,但不确定您的用户网站是否启用了https。

这可能会有帮助:

//https://stackoverflow.com/a/49849482/6525081
函数isValidURL(字符串){
var res=string.match(/(http(s)?:\/\/)?(www\)?[-a-zA-Z0-9@:%.\+~\=]{2256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~ \?&/=]*])/g);
返回值(res!==null)
};
document.querySelector('#URL').addEventListener('change',function(){
//触发更改事件,以便:
const isUrl=isValidURL((this.value).toString());//输入值的变量
如果(isUrl!==true){//如果这还不是url,
纽瓦尔http://www.“+this.value+'.com';//将其设置为url并
this.value=newVal;//将其添加为输入值
}
else{return false}//if not abort
});