Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查url是否有效_Javascript_Regex - Fatal编程技术网

Javascript 检查url是否有效

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

我试图检查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]);
}
请帮我解决它

感谢您的帮助

7的问题是
(www\)?
允许0或1
www.
[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
必须是小写的。