jquery - 使用正则表达式验证 URL 中的空格

标签 jquery regex

我正在使用下面的代码来验证 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/

相关文章:

python - 将包含 2 个值的列拆分为 pandas df 中的不同列

PHP:正则表达式忽略引号内的转义引号

java - Maven jarsigner,所有以 "test"开头的 jar

jquery - 淡入和淡出动画位置 - 更好的写法?

javascript - 计算特定行中文本区域中的字符数

jquery - 启用scrollX 时标题列与DataTable 不对齐

正则表达式删除特定字符前的所有数字(在 R 中工作)

python - 具有多个组的正则表达式?

javascript - Highcharts 密度点图支持吗?

javascript - 如何检测 Kendo 中是否进行了过滤?