如何修改下面的正则表达式,以便不带“http://”、“https://”、“ftp://”或“mailto://”的网址仍然有效?正则表达式取自 validator.js
var url = 'www.test.com';
isURL(url);
function isURL(url) {
var urlRegex = '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$';
var urlT = new RegExp(urlRegex, 'i');
if(!(url.length < 2083 && urlT.test(url)))
{
alert("invalid url");
}
else
{
alert("valid url");
}
}
最佳答案
验证 URL 的奇怪要求。
但是您可以通过使用 ?
使 (?:(?:http|https|ftp)://)
可选,就像这样 (? :(?:http|https|ftp)://)?
关于Javascript正则表达式用于不带http的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547697/