如何使用正则表达式从包含用户数据的字符串中提取域名
符合需求的域名提取正则方案
可用正则表达式
提取@之后的完整域名(要求后缀长度为2位)使用:@((?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2})
如果仅需要提取最后一个.之后长度为2位的后缀部分,使用:@.+\.([a-zA-Z]{2})
正则逻辑说明
- 先匹配
@符号锁定域名起始边界,避免匹配到@之前的无关内容 (?:[a-zA-Z0-9-]+\.)+匹配域名主体部分,支持多段域名结构(例如xxx.yyy.cn中的xxx.yyy.部分),非捕获组不会额外占用分组结果,提取完整域名时直接取分组1的内容即可[a-zA-Z]{2}严格限定最后一个.之后的后缀长度为2位,仅匹配字母组成的通用/国家顶级域名
适配优化建议
- 如果待匹配字符串中域名后存在空格、换行等其他字符,可添加终止断言提升匹配准确率,修改为
@((?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2})(?=\s|$) - 如果需要支持数字开头的域名、中文域名等特殊场景,可对应调整字符匹配区间的规则
内容的提问来源于stack exchange,提问作者user15064722
相关产品推荐
相关产品推荐

