无路径URL正则提取:匹配邮箱签名中的网站域名及问题排查
解决邮件签名中提取无路径网站URL的正则方案
针对你遇到的误匹配邮箱域名、行中间URL匹配异常的问题,调整后的正则表达式可以完美解决:
(?<![@\w.])((https?://)?(www\.)?(\w+\.)+[a-zA-Z]{2,})(?![\w.])
正则说明
(?<![@\w.]):反向预查,确保目标URL前面不是@、字母、数字或点,彻底避开邮箱里的域名(比如name.surname@test2.com中的test2.com),也不会匹配其他单词的附属部分(比如abc.test.com里的test.com)。(https?://)?:兼容带/不带http/https协议头的情况。(www\.)?:兼容带/不带www前缀的情况。(\w+\.)+[a-zA-Z]{2,}:支持多级顶级域名(比如test.com.cn),(\w+\.)+匹配多段子域名加后缀,[a-zA-Z]{2,}匹配最终顶级域名。(?![\w.]):正向预查,确保URL后面不是字母、数字或点,避免把test.comabc这类非独立内容误判为URL。
匹配验证
- 正确匹配:
www.test.com、https://test.com.cn、http://www.test.com.cn、test.com、test.com.cn - 排除匹配:
name.surname@test2.com(邮箱域名被反向预查拦截)、name.surname(无合法域名结构)
内容的提问来源于stack exchange,提问作者sagi
相关产品推荐
相关产品推荐

