首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL-检查在浏览器中运行无休止的正则表达式

URL-检查在浏览器中运行无休止的正则表达式
EN

Stack Overflow用户
提问于 2015-10-07 06:43:51
回答 1查看 48关注 0票数 0

我使用下面的正则表达式来检查URL是否有效

代码语言:javascript
复制
var re = /^(http[s]?:\/\/(www\.)?|ftp:\/\/(www\.)?|www\.){1}([0-9A-Za-z-\.@:%_+~#=]+)+((\.[a-zA-Z]{2,3})+)(/(.)*)?(\?(.)*)?/;
var is_valid = re.test(input_url);

它适用于小的输入,但随着较大的输入开始无休止地运行。考虑以下64个字符的输入

代码语言:javascript
复制
re.test("http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")

当使用最新的谷歌Chrome运行时,运行这个程序不会在几分钟内完成。

正则表达式有问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 07:11:03

吊死是由于回溯,正如马里亚诺在评论中提到的。具有多个量词(如*和+)的正则表达式可能会导致潜在匹配的排列过多,当字符串不匹配时,引擎将永远挂起。

但是,除此之外,regex还存在多个问题,不适合使用。我建议您从前面有关这个主题的问题中的一种方法重新开始:

尝试使用JavaScript验证URL

验证URL的Javascript正则表达式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32985399

复制
相关文章

相似问题

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