我写了url验证正则表达式,但正则表达式非常慢



我知道这是缓慢的,因为([.-][a-z0-9])*。但我不知道如何优化它。

^https://([a-z0-9]+([.-][a-z0-9])*)+(.([a-z]{2,11}|[0-9]{1,5}))(:[0-9]{1,5})?(/.*)?$

你不必在你的模式中使用)*)+这一部分。这也可能导致灾难性的回溯。

注意如果正则表达式的分隔符也是/,则只需要转义反斜杠,并且不需要转义[.-]

如果你以后不需要捕获组,你可以省略它们。

^https://[a-z0-9]+(?:[.-][a-z0-9]+)*.(?:[a-z]{2,11}|[0-9]{1,5})(?::[0-9]{1,5})?(/.*)?$

模式匹配:

  • ^字符串
  • 起始
  • https://匹配https://因为你只想匹配https
  • [a-z0-9]+匹配1+倍所列
  • (?:[.-][a-z0-9]+)*可选地重复匹配.-,并1+次列出的任何
  • .(?:[a-z]{2,11}|[0-9]{1,5})匹配2-11个字符a-z或匹配1-5个数字
  • (?::[0-9]{1,5})?可选匹配:和1-5位数字
  • (/.*)? Optionally match/'和其余行
  • $字符串结束

Regex演示

相关内容

  • 没有找到相关文章

最新更新