前言
在上面文章 正则表达式匹配链接 中,我们制造了一个正则表达式,号称解决一切。。。
不到 1h 打脸随之而来:
【1.17-1.18】铁砧工艺https://www.mcbbs.net/forum.php?mod=viewthread&tid=1276829

它居然把前面的 1.17-1.18 也识别成了链接。
到此我悟了,不可能用一个公式就解决所有麻烦,所以我决定分三类进行匹配。
一、带协议类型
/(https?|ftp|file|steam):\/\/[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+[-A-Za-z0-9+&@\/#%=~_|]/g

二、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

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

可以看到最后一行 12.34.56.78/index.html 错误匹配到了 index.html,但按照 一 二 三 类型的顺序写下来,剩给 三 匹配的基本不会存在这样的问题了。
四、总结
一口吃个大胖子是不现实的。脚踏实地。
原创
正则表达式匹配链接II
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法