url检查正则表达式在浏览器中无休止地运行
URL-checking regular expression running endless in browser
我使用以下正则表达式来检查url是否有效
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个字符的输入
re.test("http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
在使用最新的Google Chrome浏览器时,运行此操作不会在几分钟内完成。
正则表达式有问题吗?
挂起是由于回溯,正如Mariano在评论中提到的。一个正则表达式有多个量词,如*和+,可能会导致潜在匹配的可能排列太多,当字符串不匹配时,引擎在尝试探索它们时永远挂起。
然而,除此之外,正则表达式有多个问题,不适合目的。我建议你从之前关于这个话题的问题中选择一个方法重新开始:
尝试使用JavaScript验证URL
Javascript正则表达式验证URL
相关文章:
- 为什么setTimeout适用于无休止的递归调用
- 使用SetInterval进行无休止循环
- 没有for的Javascript无休止循环
- Javascript无休止的循环毫无原因地发生
- 为什么这会造成一个无休止的循环并使我的浏览器崩溃
- 使用click()方法是在创建一个无休止的循环
- Jquery无休止滚动加载来自其他站点的内容
- HTML5历史API弹出状态重新加载野生动物园刷新页面无休止
- Tumblr 无限(无休止)滚动/自动页面脚本问题
- 为什么我的程序发出无休止的 GET 请求
- 无休止的控制台日志,javascript不会离开函数requestAnimationFrame
- 浏览器中的无休止的页面更新(javascript)
- 使无休止的jQuery简短而简单
- 创建按钮时陷入无休止的循环
- svg围绕其中心无休止地旋转形状
- 使用胡子模板实现无休止滚动时出现DOM异常8错误;jquery砌石
- url检查正则表达式在浏览器中无休止地运行
- 无休止的滚动和使用GET方法来过滤内容
- 无休止的滚动和过滤JSON数据
- 为什么在VS2010调试器中运行ASP时脚本块会无休止地增长?具有部分回发的网页