有人可以解释以下正则表达式的含义

时间:2018-01-11 23:59:21

标签: javascript regex

/(.*?)((http:\/\/|https:\/\/)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,6}(\/[a-zA-Z0-9\-\.]+)*){1}(.*?)/g

我只能对上述正则表达式做出一些假设。但大部分内容对我来说都很神秘。

(http:\/\/|https:\/\/) - 它包含httphttps协议。

[a-zA-Z]{2,6} - 包含2到6次之间的任何小写或大写字符。

/g - 递归搜索

但是无法把所有的块放在一起。

1 个答案:

答案 0 :(得分:2)

这看起来像是在尝试匹配完整的网址。

    正如您所提到的,
  • (http:\/\/|https:\/\/)?会查找可选的协议前缀
  • (.*?)在开头和结尾处匹配网址之前或之后的任何内容。
  • [a-zA-Z0-9\-\.]+可能会尝试匹配域名和子域名(例如test.us.domain
  • \.[a-zA-Z]{2,6}与顶级域名相匹配(例如.com.us.ninja
  • (\/[a-zA-Z0-9\-\.]+)*正在寻找路径(例如/about/files/my-file001.txt
  • {1}只有一个

此正则表达式为此目的存在错误,例如,允许.个字符(例如[a-zA-Z0-9\-\.]+)的某些段将连续多次允许它们(即{ {1}})但一般来说,这应该与网址相匹配,前提是他们周围的数据看起来不像网址。