アルゴリズムの質問:文字列が有効なipv4アドレスであるかどうかを確認します

問題の説明
文字列が有効なIPv4アドレスであるかどうかを確認します

ipv4アドレスの機能
たとえば、123.1.33.2に
は4桁があり、各桁は直接除算されます。各桁の範囲は0〜255、つまり0.0.0.0〜255.255.255.255です

(方法1)
現在の文字列を文字の配列に分割し(区切り文字に注意してください。エスケープして\\として記述する必要があります)、各ビットの範囲が0〜255の間にあるかどうかを判断します。 0〜255、現在の文字が0で終わり、最初の桁ではないかどうかを判断します(たとえば、01.11.11.11は有効なipv4アドレスではありません)

boolean checkIp(String ip) throws Exception{
    
    

		String arrs[]=ip.split("\\.");//.转义
		if (arrs.length!=4) {
    
    

			return false;
		}
		for(int i=0;i<arrs.length;i++) {
    
    
			Integer num=null;
			try {
    
    
				num=Integer.parseInt(arrs[i]);
				if (num<0||num>255) {
    
    
					return false;
				}
				if (!num.equals("0")&&arrs[i].startsWith("0")) {
    
    //避免01出现
					return false;
				}
				
			} catch (NumberFormatException e) {
    
    
				// TODO: handle exception
				return false;
			}
		}
		return true;
		
	}

(方法2)正規表現を使用する

boolean checkIp2(String ip) throws Exception{
    
    

		String arrs[]=ip.split("\\.");//.转义
		if (arrs.length!=4) {
    
    

			return false;
		}
		String reg="\\d||[1,9]\\d{1,2}";
		for(String arr:arrs) {
    
    
			try {
    
    
				if (!arr.matches(reg)||Integer.parseInt(arr)>255) {
    
    
					return false;	
				}
			} catch (NumberFormatException e) {
    
    
				// TODO: handle exception
			}
		}
		return true;
		
	}

おすすめ

転載: blog.csdn.net/rj2017211811/article/details/105698956