Javascript正则expression式来validationURL

我使用以下正则expression式validationurl。 我也想validationgoogle.com,但它返回false。 在RE下面可以更改什么来validationgoogle.com

console.log(learnRegExp('http://www.google-com.123')); // false console.log(learnRegExp('https://www.google-com.com')); // true console.log(learnRegExp('http://google-com.com')); // true console.log(learnRegExp('http://google.com')); //true console.log(learnRegExp('google.com')); //false function learnRegExp(){ return /^(ftp|https?):\/\/+(www\.)?[a-z0-9\-\.]{3,}\.[az]{3}$/.test(learnRegExp.arguments[0]); } 

这一般validationURL

 console.log('http://www.google-com.123.com', validateUrl('http://www.google-com.123.com')); // true console.log('http://www.google-com.123', validateUrl('http://www.google-com.123')); // false console.log('https://www.google-com.com', validateUrl('https://www.google-com.com')); // true console.log('http://google-com.com', validateUrl('http://google-com.com')); // true console.log('http://google.com', validateUrl('http://google.com')); //true console.log('google.com', validateUrl('google.com')); //false console.log('http://www.gfh.', validateUrl('http://www.gfh.')); //false console.log('http://www.gfh.c', validateUrl('http://www.gfh.c')); //false console.log('http://www.gfh:800000', validateUrl('http://www.gfh:800000')); //false console.log('www.google.com ', validateUrl('www.google.com ')); //false console.log('http://google', validateUrl('http://google')); //false console.log('//cdnblabla.cloudfront.net/css/app.css', validateUrl('//cdnblabla.cloudfront.net/css/app.css')); //true function validateUrl(value) { return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[az\u00a1-\uffff0-9]-*)*[az\u00a1-\uffff0-9]+)(?:\.(?:[az\u00a1-\uffff0-9]-*)*[az\u00a1-\uffff0-9]+)*(?:\.(?:[az\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value); } 

这对我来说是完美的。 我希望这对别人来说是完美的! 🙂

/^((https?):\/\/)?([w|W]{3}\.)+[a-zA-Z0-9\-\.]{3,}\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?$/

在这里,你需要使“ftp / http(s)://”不是必须的。 使用 ”?” 为了这。

 function learnRegExp(){ return /((ftp|https?):\/\/)?(www\.)?[a-z0-9\-\.]{3,}\.[az]{3}$/.test(learnRegExp.arguments[0]); } 
 /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ 

^...符号是说开始,所以最后的日志是有道理的,即string不以ftp或http(s)开头。 你也用...$来说,string必须以三个字母结束,而这个字母再次失败(第2行),它不会像这样结束。 一些小的调整,你应该在那里。