当前位置:

Java正则表达式替换域名

访客 2024-01-08 1360 0

正则表达式替换域名

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

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

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

域名不能超过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,(/)表示分隔符,这个符号之前的一串就是一整个域名了。

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~