在Grails中验证ip地址



我正在寻找一种通过约束验证Grails中IP地址的方法。

这样的事情可能发生吗?

package example
class Ip {
    String ip
    static constraints = {
        ip(unique: true, inetAddress: true)
    }
}

我找到了这个链接:http://grails.org/doc/2.2.x/api/org/codehaus/groovy/grails/validation/routines/InetAddressValidator.html,但我不知道如何实现。

我找到了我搜索的解决方案

import org.codehaus.groovy.grails.validation.routines.InetAddressValidator
class Ip {
   String ip

 static constraints = {
    ip(blank: false, unique: true, validator: { 
         return InetAddressValidator.getInstance().isValidInet4Address(it) 
         } )
 }
}

您可以使用正则表达式来验证IP地址格式。

class Ipaddr {
    String ip_addr
    static constraints = {
        ip_addr(matches:/^([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])).([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])).([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])).([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$/)
    }
}

如果你需要一个特定的范围,你可以用构建正则表达式

IP地址范围工具http://support.google.com/bin/answer.py?hl=en&answer=1034771

Grails 3在org.grails.validation.routines.InetAddressValidator实现了InetAddressValidator


对于Grails 4+,请使用Apache commons-validator:

build.gradle:

implementation 'commons-validator:commons-validator:1.7'

Ip.groovy:

import org.apache.commons.validator.routines.InetAddressValidator
class Ip {
   String ip
   static constraints = {
      ip(blank: false, unique: true, validator: {
         InetAddressValidator.instance.isValidInet4Address(it) 
      })
    }
}

或者使用regex。示例:

常数保持器:

class RegexValidationConstants {
    private final static String IPV4_OCT = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/
    final static String IPV4 = /^${IPV4_OCT}(.${IPV4_OCT}){3}$/.toString()
}

Ip.groovy:

class Ip {
   String ip
   static constraints = {
      ip(blank: false, unique: true, matches: RegexValidationConstants.IPV4)
    }
}

相关内容

  • 没有找到相关文章

最新更新