/(.*?)((http:\/\/|https:\/\/)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,6}(\/[a-zA-Z0-9\-\.]+)*){1}(.*?)/g
我只能对上述正则表达式做出一些假设。但大部分内容对我来说都很神秘。
(http:\/\/|https:\/\/)
- 它包含http
或https
协议。
[a-zA-Z]{2,6}
- 包含2到6次之间的任何小写或大写字符。
/g
- 递归搜索
但是无法把所有的块放在一起。
答案 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}})但一般来说,这应该与网址相匹配,前提是他们周围的数据看起来不像网址。