我使用下面的代码来验证URL。它还会验证URL中空格。例如,'http://news.yahoo.com/blogs/lookout/texas -tornadoes-granbury-photos-video-121304415.html'
var post_permalink = 'http://news.yahoo.com/blogs/lookout/texas -tornadoes-granbury-photos-video-121304415.html';
if(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(post_permalink)){
console.log('valid');
} else {
console.log('invalid');
}谁能建议我在哪里需要做更改,这样它就不会占用URL中的空间。
这是jsfiddle
提前感谢
发布于 2013-05-17 04:24:17
可以在不改变其含义的情况下简化正则表达式。
这部分:
(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)可以重写为:
(https?:\/\/(www\.)?|www\.)这部分:
[\-\.]{1}可以重写为:
[-.]采集组不会被使用,因此您可以将其设置为非采集组:
/^(?:https?:\/\/(?:www\.)?|www\.)[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5}(?::[0-9]{1,5})?(?:\/.*)?$/空间问题可以通过将(?:\/.*)?末尾的.*更改为\S*来解决(模式的其余部分无论如何都不允许使用空间):
/^(?:https?:\/\/(?:www\.)?|www\.)[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5}(?::[0-9]{1,5})?(?:\/\S*)?$/https://stackoverflow.com/questions/16588927
复制相似问题