Java正则表达式替换域名

这篇博客讲述了如何在Java中使用正则表达式来替换域名,提到了域名的长度限制和字符组成规则,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式替换域名

今天快下班的时候,有一个替换域名的需求,先附上代码

/**
     * 外部渠道替换图片域名
     */
 public static String replaceDomainName(String text) {
    String replaceAll = text.replaceAll("((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(/)", "你要替换的");
    return replaceAll;
    }

域名的规定(这个不是很懂):

域名不能超过63位;
域名中的字母只能为字母(a-z)、数字(0-9)、-(短横杆);
-(短横杆)不能连着出现两次;

正则表达式解释一下的话

首先 ((http://)|(https://))? 部分,
((http://)表示http请求,
(https://))表示https请求,
中间用|或者符号分隔,表两者其一,
最后一个?表示前面的子表达式出现0次或者1次,因为可以有的域名没带http或者https前缀。

中间([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+部分
先看第一个园括号里[a-zA-Z0-9],表示a-z所有小写字母,A-Z所有大写字母,0-9所有数字,
再第二个园括号里,[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9\-]同上,最后一个\\-,第一个\表转义第二个\,\\\-就表示匹配-,因为-是特殊字符,{0,61}表示前面子表达式的出现次数,0-61次,
第二个[a-zA-Z0-9]?就同上了,最后一个?表示前面的子表达式出现0次或者1次。
中间部分最后一个\\.,同上\\.表示.,因为.是特使字符,表示除换行符(\n、\r)之外的任何单个字符
整个的意思表达,就是一个字母或者数字开头,然后中间可以有很多或者没有字母,数字,或者-,然后以.结尾
最后部分+[a-zA-Z]{2,6}(/)
+表示前面的子表达式一次或多次,意思是我的中间部分可以出现多次,
[a-zA-Z]{2,6}是表示域名的后缀了,比如cn,com,
(/)表示分隔符,这个符号之前的一串就是一整个域名了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值