检查url是否有效

22 浏览
0 Comments

检查url是否有效

这个问题已经有答案了

什么是检查字符串是否为有效URL的最佳正则表达式?

我试图检查URL是否有效或无效。 7,8的检查结果错误。

alert('1: ' + learnRegExp('http://www.google-com.123.com')); // true
alert('2: ' + learnRegExp('http://www.google-com.123')); // false
alert('3: ' + learnRegExp('https://www.google-com.com')); // true
alert('4: ' + learnRegExp('http://google-com.com')); // true
alert('5: ' + learnRegExp('http://google.com')); //true
alert('6: ' + learnRegExp('google.com')); //true
alert('7: ' + learnRegExp('ww.google.com')); //false -> it returns true
alert('8: ' + learnRegExp('www.google.co.il')); //true -> it returns false
alert('9: ' + learnRegExp('http://ww.google.co.il')); //false
alert('10: ' + learnRegExp('https://ww.google.co.il')); //false
function learnRegExp(){
    return /((ftp|https?):\/\/)?(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{3}$/
    .test(learnRegExp.arguments[0]);
}

请帮我解决这个问题。

任何帮助都将不胜感激!

admin 更改状态以发布 2023年5月25日
0
0 Comments

第七个问题是由于(www\.)?允许www.出现0次或1次,而[a-z0-9\-\.]允许.出现,所以只有ww.被匹配,(www\.)?就视为0次出现而[a-z0-9\-\.]匹配了ww.

第八个问题是由于\.[a-z]{3}只允许.com.net等3个字符的字符串出现在最后一个.之后,所以它限制了最后2个字符不能匹配。

不要重复造轮子:如何检查一个字符串是否是有效的URL的最佳正则表达式?

0
0 Comments

尝试这个:\n

 function learnRegExp(s) {    
      var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
      return regexp.test(s);    
 }

0