Java判断字符串是否为IP地址的方法
Java判断字符串是否为IP地址,供大家参考,具体内容如下
1、代码
主要就是这么几个条件
- 非空
- 长度符合0.0.0.0-255.255.255.255
- 包含分隔符且个数正确
- 四个全部是数字,且都在合理的范围内
/** *判断某个字符串是否是一个IP地址 * *@paramstr字符串 */ publicstaticbooleanisIpStr(Stringstr){ //非空 //booleannotBlank=StringUtils.isNotBlank(str); //长度符合0.0.0.0-255.255.255.255 //booleanlength=CommonUtils.isNumberBetween(str.length(),7,15); if(StringUtils.isNotBlank(str)&&CommonUtils.isNumberBetween(str.length(),7,15)){ Stringregex="."; //包含分隔符且个数正确 if(str.contains(regex)&&str.split(regex).length==4){ booleanlegalNumber=true; //四个全部是数字,且都在合理的范围内 for(Stringobj:Lists.newArrayList(str.split(regex))){ if(NumberUtils.isDigit(obj)){ Integervalue=Integer.parseInt(obj); legalNumber=CommonUtils.isNumberBetween(value,0,255); }else{ //任意一个不是数字,不合法 legalNumber=false; break; } } returnlegalNumber; } } returnfalse; }
2、CommonUtils工具类
packagecn.zjcs.common.util; importcn.hutool.core.util.ReUtil; importlombok.AccessLevel; importlombok.Getter; importlombok.NoArgsConstructor; importjava.math.BigDecimal; importjava.math.RoundingMode; /** *@authorCreatedby谭健on2019/6/11.星期二.15:20. *©AllRightsReserved. */ @NoArgsConstructor(access=AccessLevel.PRIVATE) publicclassCommonUtils{ /** *是否为null * *@paramo *@returnnull返回true */ publicstaticbooleanisNull(Objecto){ returno==null; } /** *是否不为null * *@paramo *@return不为null返回true */ publicstaticbooleanisNotNull(Objecto){ return!isNull(o); } /** *是否是0, * *@parambigDecimal *@return0返回true */ publicstaticbooleanisZeroDecimal(BigDecimalbigDecimal){ returnisNotNull(bigDecimal)&&bigDecimal.compareTo(BigDecimal.ZERO)==0; } /** *是否不是0 * *@parambigDecimal *@return不是0返回true */ publicstaticbooleanisNotZeroDecimal(BigDecimalbigDecimal){ return!isZeroDecimal(bigDecimal); } /** *是否是1 * *@parambigDecimal *@return是1返回true */ publicstaticbooleanisOneDecimal(BigDecimalbigDecimal){ returnisNotNull(bigDecimal)&&bigDecimal.compareTo(BigDecimal.ONE)==0; } /** *是否不是1 * *@parambigDecimal *@return不是1返回true */ publicstaticbooleanisNotOneDecimal(BigDecimalbigDecimal){ returnbigDecimal.compareTo(BigDecimal.ONE)!=0; } /** *是否是0long * *@paraml *@return是0long返回true */ publicstaticbooleanisZeroLong(Longl){ returnl!=null&&l.equals(0L); } /** *是否不是0long * *@paraml *@return不是0long返回true */ publicstaticbooleanisNotZeroLong(Longl){ return!isZeroLong(l); } /** *是否是0int * *@paraml *@return是0int返回true */ publicstaticbooleanisZeroInt(Integerl){ returnl!=null&&l.equals(0); } /** *是否不是0int * *@paraml *@return不是0int返回true */ publicstaticbooleanisNotZeroInt(Integerl){ return!isZeroInt(l); } /** *两个decimal是否相等 * *@parami *@paramj *@return相等返回true */ publicstaticbooleanisSameDecimal(BigDecimali,BigDecimalj){ returni.compareTo(j)==0; } /** *第一个decimal是否大于第二个decimal * *@parami *@paramj *@return大于返回true */ publicstaticbooleanisDecimalGt(BigDecimali,BigDecimalj){ returni.compareTo(j)>0; } /** *第一个decimal是否小于第二个decimal * *@parami *@paramj *@return小于返回true */ publicstaticbooleanisDecimalLt(BigDecimali,BigDecimalj){ returni.compareTo(j)<0; } /** *特殊字符串处理 * *@paramcharacter *@return */ publicstaticStringreplaceSpecialCharacter(Stringcharacter){ StringregEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]"; returnReUtil.replaceAll(character,regEx,""); } /** *数据分比切割 **比如p为2,要做千分切割,则h值为"1000.00" *得到值为0.002 * *@paramp输入值 *@paramh切割值 *@return切割后的值 */ publicstaticBigDecimalpercentFormat(Integerp,Stringh){ returnnewBigDecimal(String.valueOf(p)).divide(newBigDecimal(h),4,RoundingMode.HALF_UP).setScale(4,BigDecimal.ROUND_HALF_UP); } publicstaticbooleanorEq(Object...o){ if(o.length<2){ thrownewNullPointerException("长度不足"); } Objecto1=o[0]; for(inti=1;i
=min.longValue()&&number.longValue()<=max.longValue(); } /** *标准数学计算 */ @NoArgsConstructor(access=AccessLevel.PRIVATE) publicstaticclassMath{ /** *精确的表示分数的数学计算,因为使用double等会丢失精度 */ @SuppressWarnings("rawtypes") @Getter publicstaticclassFractionextendsNumberimplementsComparable{ privatestaticfinallongserialVersionUID=2330398718018182597L; /** *定义分子 */ privatelongnumerator=0; /** *定义分母 */ privatelongdenominator=1; publicFraction(){ this(0,1); } publicFraction(longnumerator,longdenominator){ longgcd=gcd(numerator,denominator); this.numerator=((denominator>0)?1:-1)*numerator/gcd; this.denominator=java.lang.Math.abs(denominator)/gcd; } /** *求最大公约数 */ privatelonggcd(longf,longs){ longfAbs=java.lang.Math.abs(f); longsAbs=java.lang.Math.abs(s); //学术名称Gcd int_Gcd=1; //欧几里德算法 for(inti=1;i<=fAbs&&i<=sAbs;i++){ if(fAbs%i==0&&sAbs%i==0){ _Gcd=i; } } return_Gcd; } /** *分数的加法 * */ publicFractionadd(FractionsecondRational){ longn=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator(); longd=denominator*secondRational.getDenominator(); returnnewFraction(n,d); } /** *分数的减法 * */ publicFractionsubtract(FractionsecondRational){ longn=numerator*secondRational.getDenominator()-denominator*secondRational.getNumerator(); longd=denominator*secondRational.getDenominator(); returnnewFraction(n,d); } /** *分数乘法 * */ publicFractionmulitiply(FractionsecondRational){ longn=numerator*secondRational.getNumerator(); longd=denominator*secondRational.getDenominator(); returnnewFraction(n,d); } /** *分数除法 * */ publicFractiondivide(FractionsecondRational){ longn=numerator*secondRational.getDenominator(); longd=denominator*secondRational.numerator; returnnewFraction(n,d); } @Override publicStringtoString(){ if(denominator==1){ returnnumerator+""; }else{ returnnumerator+"/"+denominator; } } @SuppressWarnings("all") @Override publicbooleanequals(Objectparm1){ return(this.subtract((Fraction)(parm1))).getNumerator()==0; } @Override publicintcompareTo(Objecto){ if((this.subtract((Fraction)o)).getNumerator()>0){ return1; }elseif((this.subtract((Fraction)o)).getNumerator()>0){ return-1; }else{ return0; } } @Override publicdoubledoubleValue(){ returnnumerator*1.0/denominator; } @Override publicfloatfloatValue(){ return(float)doubleValue(); } @Override publicintintValue(){ return(int)doubleValue(); } @Override publiclonglongValue(){ return(long)doubleValue(); } } /** *@paramdividend被除数 *@paramdivisor除数 *@paramaccuracy精度 */ publicstaticBigDecimaldivide(BigDecimaldividend,BigDecimaldivisor,intaccuracy){ //0除以任何数=无穷大,任何数除以0无法除,都会抛出错误 if(isZeroDecimal(divisor)||isZeroDecimal(dividend)){ returnBigDecimal.ZERO; } returndividend.divide(divisor,16,RoundingMode.HALF_UP).setScale(accuracy,RoundingMode.HALF_UP); } /** *@paramf. *@params. *@paramaccuracy精度 */ publicstaticBigDecimalmultiply(BigDecimalf,BigDecimals,intaccuracy){ //0*任何数=0 if(isZeroDecimal(f)||isZeroDecimal(s)){ returnBigDecimal.ZERO; } returnf.multiply(s).setScale(accuracy,RoundingMode.HALF_UP); } /** *开多次方根 * */ publicstaticBigDecimalpow(BigDecimalf,BigDecimals){ //防止出现Infinity的情况 if(isZeroDecimal(f)&&isDecimalLt(s,BigDecimal.ZERO)){ returnBigDecimal.ZERO; } returnnewBigDecimal(String.valueOf(java.lang.Math.pow(f.doubleValue(),s.doubleValue()))); } /** *获取分数值 * */ publicstaticBigDecimalfraction(Fractionf){ longdenominator=f.getDenominator(); longnumerator=f.getNumerator(); returndivide(newBigDecimal(String.valueOf(numerator)),newBigDecimal(String.valueOf(denominator)),16); } } }
3、NumberUtils工具类
packagecn.zjcs.common.util; importlombok.AccessLevel; importlombok.NoArgsConstructor; importjava.math.BigDecimal; importjava.util.regex.Matcher; importjava.util.regex.Pattern; /** *@author.. */ @NoArgsConstructor(access=AccessLevel.PRIVATE) publicclassNumberUtils{ privatestaticfinalPatternDIGIT_PATTERN=Pattern.compile("[0-9]*"); /** *判断某个decimal是否等于0 * *@paramdecimalBigDecimal数字 *@return等于0返回true */ publicstaticbooleanisZeroDecimal(BigDecimaldecimal){ returndecimal==null||decimal.compareTo(BigDecimal.ZERO)==0; } /** *判断某个decimal是否不等于0 * *@paramdecimalBigDecimal数字 *@return不等于0返回true */ publicstaticbooleanisNotZeroDecimal(BigDecimaldecimal){ returndecimal!=null&&decimal.compareTo(BigDecimal.ZERO)!=0; } /** *判断一个字符串是否是数字 * *@paramvar字符串 *@return是数字返回true */ publicstaticbooleanisDigit(Stringvar){ MatcherisNum=DIGIT_PATTERN.matcher(var); returnisNum.matches(); } publicstaticbooleanisEmptyNumber(Numbernumber){ returnnumber==null ||number.intValue()==0 ||number.longValue()==0 ||number.doubleValue()==0.00 ||number.byteValue()==0 ||number.floatValue()==0.0 ||number.shortValue()==0; } publicstaticbooleanisNotEmptyNumber(Numbernumber){ return!isEmptyNumber(number); } publicstaticbooleanisNotZeroLong(Longsomething){ if(something==null){ returnfalse; } return!something.equals(0L); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。