gpt4 book ai didi

javascript - 为什么这个正则表达式执行缓慢?

转载 作者:行者123 更新时间:2023-11-28 09:20:56 25 4
gpt4 key购买 nike

所以我有一个识别 URL 的正则表达式:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

但是,当我使用它来识别用户输入的网址时,仅使用 .test 就会大大减慢页面速度,即使根据 MDN ,是supposed to be faster than exec 。我是否使用过时的方法来测试正则表达式?有没有我不知道的更快的方法?或者我的正则表达式真的又长又复杂?

这是一个JSFiddle .

编辑:在 Chrome v24 中需要 20.7 秒Internet Explorer 9 中为 1:48.5

最佳答案

因此,正则表达式似乎仅在处理已发布信息的 url 时才会滞后,例如在 jsfiddle url Product.aspx?Item=N82E16811139009 中。当 url 的该部分被删除时,正则表达式将正确且快速地执行。

但是,从 ([\/\w\.-]*)* 中删除最后一个星号会使正则表达式预成型不正确,因此使用 ([\/\w\.- ]*) 不是一个选项。

相反,为了使正则表达式能够处理包含发布信息的 URL,需要删除最后一部分:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*/

这是因为正则表达式旨在检测文件类型或网址末尾的反斜杠,而不是问号和发布的信息。删除最后一部分可以解决问题,并且正则表达式可以正确并且快速运行。

关于javascript - 为什么这个正则表达式执行缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com