首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式验证URL中的空格

问使用正则表达式验证URL中的空格
EN

Stack Overflow用户
提问于 2013-05-16 21:34:26
回答 1查看 3K关注 0票数 3

我使用下面的代码来验证URL。它还会验证URL中空格。例如,'http://news.yahoo.com/blogs/lookout/texas -tornadoes-granbury-photos-video-121304415.html'

代码语言:javascript
复制
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

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-17 04:24:17

可以在不改变其含义的情况下简化正则表达式。

这部分:

代码语言:javascript
复制
(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)

可以重写为:

代码语言:javascript
复制
(https?:\/\/(www\.)?|www\.)

这部分:

代码语言:javascript
复制
[\-\.]{1}

可以重写为:

代码语言:javascript
复制
[-.]

采集组不会被使用,因此您可以将其设置为非采集组:

代码语言:javascript
复制
/^(?:https?:\/\/(?:www\.)?|www\.)[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5}(?::[0-9]{1,5})?(?:\/.*)?$/

空间问题可以通过将(?:\/.*)?末尾的.*更改为\S*来解决(模式的其余部分无论如何都不允许使用空间):

代码语言:javascript
复制
/^(?:https?:\/\/(?:www\.)?|www\.)[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5}(?::[0-9]{1,5})?(?:\/\S*)?$/
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16588927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档