在Grails中验证IP地址

3
3个回答

5
我找到了我所寻求的解决方案。
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) 
         } )
 }
}

1
你可以使用正则表达式来验证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

谢谢!但我更希望使用API验证程序来解决问题。 - mbs
嗨,我刚发现谷歌的答案不再在线上。 - Eel Lee

0

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) 
      })
    }
}

或者使用正则表达式。例如:

常量持有者:

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)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接