我正在使用下面的代码来验证 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
提前致谢
最佳答案
可以简化正则表达式而不改变其含义。
这部分:
(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*)?$/
关于jquery - 使用正则表达式验证 URL 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588927/