【问题标题】:How can I check if a String is an IP in Groovy?如何检查字符串是否是 Groovy 中的 IP?
【发布时间】:2013-08-09 23:41:20
【问题描述】:

从给定的字符串:

String someIp = // some String

如何检查 someIp 是否是有效的 Ip 格式?

【问题讨论】:

    标签: java grails groovy


    【解决方案1】:

    您可以使用InetAddressValidator 类来检查和验证字符串是否是有效的 ip。

    import org.codehaus.groovy.grails.validation.routines.InetAddressValidator
    
    ...
    String someIp = // some String
    if(InetAddressValidator.getInstance().isValidInet4Address(someIp)){
        println "Valid Ip"
    } else {
        println "Invalid Ip"
    }
    ...
    

    试试这个..,.

    【讨论】:

      【解决方案2】:

      正则表达式可以。有简单的,也有更复杂的。一个简单的就是这个正则表达式:

      \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
      

      像这样使用它:

      boolean isIP = someIP.maches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
      

      但这也将匹配 999.999.999.999,这不是有效的 IP 地址。 regular-expressions.info 上有一个巨大的正则表达式:

      (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
      

      这个人会妥善处理这项工作。如果你使用这个,别忘了将每个\ 转义为另一个\


      如果您不喜欢庞大的正则表达式,您可以使用以下代码:

      public static boolean isIP(String str)
      {
          try
          {
               String[] parts = str.split("\\.");
               if (parts.length != 4) return false;
               for (int i = 0; i < 4; ++i)
               {
                   int p = Integer.parseInt(parts[i]);
                   if (p > 255 || p < 0) return false;
               }
               return true;
          } catch (Exception e)
          {
              return false;
          }
      }
      

      【讨论】:

      • 这是最好的答案,他显然比我更了解Java中的REGEX,请选择这个。我对 REGEX 的世界还很陌生,还没有在 JAVA 中使用它。
      • 非常好。此外,在 Groovy 中,您可以使用 /regex/ 字符串,因此不需要转义,并使用 ==~ 运算符来检查正则表达式匹配
      【解决方案3】:

      面向对象方式:

      String myIp ="192.168.43.32"
      myIp.isIp();
      

      知道,您必须将其添加到 BootStrap.groovy

      String.metaClass.isIp={
         if(org.codehaus.groovy.grails.validation.routines.InetAddressValidator.getInstance().isValidInet4Address(delegate)){
          return true;
         } else {
          return false;
          } 
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2014-02-20
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 2022-01-23
        • 2014-07-25
        • 2013-04-01
        • 2013-12-13
        相关资源
        最近更新 更多