Java用正则表达式判断是否为IP

转载 2015年04月15日 11:20:40

原文http://you23hai45.iteye.com/blog/2026855?utm_source=tuicool

  1. 代码
/** 
 1. @Title:IpAddress.java 
 2. @Package:com.you.dao 
 3. @Description:用正则表达式判断是否为IP 
 5. @date: 2014年3月4日 下午10:55:06 
 6. @Version V1.2.3 
 */  
package com.you.dao;  

import java.util.regex.Matcher;  
import java.util.regex.Pattern;  

/** 
 7. @类名:IpAddress 
 8. @描述:用正则表达式判断是否为IP 
 9. @Author:Administrator 
 10. @date: 2014年3月4日 下午10:55:06 
 */  
public class IpAddress   
{  
    public static class IpAdd  
    {  
        public boolean isIP(String addr)  
        {  
            if(addr.length() < 7 || addr.length() > 15 || "".equals(addr))  
            {  
                return false;  
            }  
            /** 
             * 判断IP格式和范围 
             */  
            String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";  

            Pattern pat = Pattern.compile(rexp);    

            Matcher mat = pat.matcher(addr);    

            boolean ipAddress = mat.find();  

            return ipAddress;  
        }  
    }  

    /** 
     * @Title : main 
     * @Type : IpAddress 
     * @date : 2014年3月4日 下午10:55:06 
     * @Description : IP可能的范围是0-255.0-255.0-255.0-255 
     * @param args 
     */  
    public static void main(String[] args)   
    {  
        /** 
         * 符合IP地址的范围 
         */  
         String oneAddress = "10.127.30.45";  
         /** 
         * 符合IP地址的长度范围但是不符合格式 
         */  
         String twoAddress = "127.30.45";  
         /** 
         * 不符合IP地址的长度范围 
         */  
         String threeAddress = "7.0.4";  
         /** 
         * 不符合IP地址的长度范围但是不符合IP取值范围 
         */  
         String fourAddress = "255.255.255.2567";  

         IpAdd ipAdd = new IpAdd();  

         //判断oneAddress是否是IP  
         System.out.println(ipAdd.isIP(oneAddress));  

         //判断twoAddress是否是IP  
         System.out.println(ipAdd.isIP(twoAddress));  

         //判断threeAddress是否是IP  
         System.out.println(ipAdd.isIP(threeAddress));  

         //判断fourAddress是否是IP  
         System.out.println(ipAdd.isIP(fourAddress));  
    }  

} 
  1. 运行结果

true
false
false
false

附录

  1. find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。
  2. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。
    Pattern pattern= Pattern.compile(“.?,(.)”);

    Matcher matcher = pattern.matcher(result);

    if (matcher.find()) {
    return matcher.group(1);
    }

  3. 详解:

matches
public static boolean matches(String regex, CharSequence input)

编译给定正则表达式并尝试将给定输入与其匹配。
调用此便捷方法的形式
Pattern.matches(regex, input);
Pattern.compile(regex).matcher(input).matches() ;
如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。
参数:
regex - 要编译的表达式
input - 要匹配的字符序列
抛出:
PatternSyntaxException - 如果表达式的语法无效

find
public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。
此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。
如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。

matcher.start() 返回匹配到的子字符串在字符串中的索引位置.
matcher.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
matcher.group()返回匹配到的子字符串
返回:
当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。

4.部分JAVA正则表达式实例

①字符匹配
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m.matches(); //返回是否匹配的结果
System.out.println(b);

Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m. lookingAt (); //返回是否匹配的结果
System.out.println(b);

Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m..find (); //返回是否匹配的结果
System.out.println(b);

②分割字符串
Pattern pattern = Pattern.compile(expression); //正则表达式
String[] strs = pattern.split(str); //操作字符串 得到返回的字符串数组

③替换字符串
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
String s = m.replaceAll(str); //替换后的字符串

④查找替换指定字符串
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, str);
i++; //字符串出现次数
}
m.appendTail(sb);//从截取点将后面的字符串接上
String s = sb.toString();
⑤查找输出字符串
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
while (m.find()) {
matcher.start() ;
matcher.end();
matcher.group(1);
}

java匹配IP正则表达式

Leytton:网上好多错的,亲测留着备用 import java.util.regex.Matcher; import java.util.regex.Pattern; public class...
  • Leytton
  • Leytton
  • 2016年07月07日 12:41
  • 4002

Java 用正则表达式判断是否为IP

本文主要介绍Java用正则表达式判断是否为IP,请看文章!
  • itluochen
  • itluochen
  • 2016年12月14日 16:53
  • 2230

Java正则表达式判断内网ip

局域网ip一般为:10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255下面这段代码...
  • u013741135
  • u013741135
  • 2016年12月29日 15:08
  • 941

java正则表达式 matches方式匹配ip

java 正则表达式 matches方式 匹配ip
  • u012270682
  • u012270682
  • 2017年07月21日 16:53
  • 174

java匹配IP正则表达式

/** * 判断是否为合法IP * @return the ip */ public boolean isboolIp(String ipAddress) { String ip...
  • yyyzlf
  • yyyzlf
  • 2009年07月15日 15:24
  • 26791

java正则表达式判断IP

真正用到的时候,查找就发现很多都是错误的,所以还是自己整理将正确的代码记录一下吧。。 以下亲测可用,判断字符串是否符合IP地址格式 public static boolean is...
  • shangming150
  • shangming150
  • 2017年05月09日 16:40
  • 660

java正则表达式验证IP地址

  • 2013年06月27日 09:51
  • 13KB
  • 下载

正则表达式验证IP地址合法性

首先学习一下正则表达式的语法规则,如下: IP地址通常是类似:10.221.105.225的格式,不能以0开头,每个字段最大不超过255,不小于0 IP匹配规则: Str...
  • lingzhm
  • lingzhm
  • 2015年04月14日 13:35
  • 4920

Java用正则表达式判断是否为IP

Java用正则表达式判断是否为IP 1、Java源码 Java代码   /**   * @Title:IpAddress.java   * @Package:com....
  • linli1991
  • linli1991
  • 2017年06月22日 22:06
  • 1191

java正则表达式筛选字符串中的ip

这只是普通的筛选字符串中的ip,不做ip合法性验证。严格来说,需要判断[1-2][0-9]等ip中的数值。 import java.util.regex.Matcher; import ja...
  • tryingfox
  • tryingfox
  • 2015年11月20日 00:17
  • 1280
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java用正则表达式判断是否为IP
举报原因:
原因补充:

(最多只允许输入30个字)