Jquery 使用正则表达式验证URL中的空间
我使用下面的代码来验证URL。它还可以验证URL中的空间。例如Jquery 使用正则表达式验证URL中的空间,jquery,regex,Jquery,Regex,我使用下面的代码来验证URL。它还可以验证URL中的空间。例如 'http://news.yahoo.com/blogs/lookout/texas -龙卷风-granbury-photos-video-121304415.html' var post_permalink = 'http://news.yahoo.com/blogs/lookout/texas -tornadoes-granbury-photos-video-121304415.html'; if(/^(http:\/\/www
'http://news.yahoo.com/blogs/lookout/texas -龙卷风-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中的空间
这是
提前感谢可以在不改变其含义的情况下简化正则表达式 本部分:
(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)
[\-\.]{1}
可以重写为:
(https?:\/\/(www\.)?|www\.)
[-.]
本部分:
(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)
[\-\.]{1}
可以重写为:
(https?:\/\/(www\.)?|www\.)
[-.]
不使用捕获组,因此可以将其设置为非捕获组:
/^(?:https?:\/\/(?:www\.)?|www\.)[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5}(?::[0-9]{1,5})?(?:\/.*)?$/
可以通过将(?:\/.*)
中结尾处的*
更改为\S*
来解决空间问题(模式的其余部分无论如何都不允许空间):
你的质询不是真的质询?是的。我举了一个例子。但我们可以通过上面的查询字符串来检查空格。@adeneo:我现在更改了查询字符串。如果发生
德克萨斯州
和-龙卷风
之间的任何案例空间,我需要验证是否必须将\s+
添加到正则表达式中?谢谢@nhahtdh。太完美了:)