前言

在上面文章 正则表达式匹配链接 中,我们制造了一个正则表达式,号称解决一切。。。

不到 1h 打脸随之而来:
【1.17-1.18】铁砧工艺https://www.mcbbs.net/forum.php?mod=viewthread&tid=1276829

image.png

它居然把前面的 1.17-1.18 也识别成了链接。
到此我悟了,不可能用一个公式就解决所有麻烦,所以我决定分三类进行匹配。

一、带协议类型

/(https?|ftp|file|steam):\/\/[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+[-A-Za-z0-9+&@\/#%=~_|]/g

image.png

二、IP 地址类型

/((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}[-A-Za-z0-9+&@#\/%?=~_|!:.]+[-A-Za-z0-9+&@\/#%=~_|]/g

image.png

三、域名+类型

/[-a-zA-Z0-9]+(\.)[.a-zA-Z]+[-A-Za-z0-9+&@#\/%?=~_|!:.]+[-A-Za-z0-9+&@\/#%=~_|]/g

image.png

可以看到最后一行 12.34.56.78/index.html 错误匹配到了 index.html,但按照 类型的顺序写下来,剩给 匹配的基本不会存在这样的问题了。

四、总结

一口吃个大胖子是不现实的。脚踏实地。