Javascript 检查url是否有效
我试图检查url是否有效。7,8的检查返回错误的输出Javascript 检查url是否有效,javascript,regex,Javascript,Regex,我试图检查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: ' + learnReg
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]);
}
请帮我解决它
感谢您的帮助 7的问题是(www\)?
允许0或1www.
和[a-z0-9\-\.]
允许
,因为它只是ww.
然后(www\)?
将其视为0,而[a-z0-9\.]
捕获ww.
8的问题是\.[a-z]{3}
只允许.com
、.net
等。它强制最后一个
后面的字符串长度为3个字符。因为只有两个字符,所以不匹配
不要尝试重新创建控制盘:试试这个:
function learnRegExp(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
return regexp.test(s);
}
请记住
www
只是一个子域。我不会费心在正则表达式中明确地包含它。很多东西都可以是有效的URL,例如http://xyz.mysite.org.ru
我想真正的测试应该是尝试加载它ww.google.com
是一个有效的域。我想说这个问题不同于提议的重复,由于ECMA和PHP确实使用两种不同风格的正则表达式。不幸的是,该页面上的RegExp是用PHP编写的,而不是按要求用JavaScript编写的……不幸的是,对于learnRegExp(“),它也运行“true”,应该是“false”。现在可以了,请注意,s
必须是小写的。