正则表达式检查IP地址的第四个八位字节是否比XXX更好

时间:2015-08-13 10:05:58

标签: regex groovy

在我的程序中,我必须检查IP地址,并且只有当ip地址的第4个八位位组大于XXX数时才必须进行判断。例如,XXX = 120。

       for example: 
       IP1 = 10.100.1.121
       IP2 = 10.100.1.119
       IP3 = 10.100.1.122

if($IP =~ /10\.100\.1\.**<120**/)

我尝试了类似10\.100\.1\.[2-9][3-9][9-9]的内容,但这不正确。

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

你可以尝试

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];}

答案 1 :(得分:1)

要匹配120以上的数字,您可以使用

/\b10\.100\.1\.(?:12[1-9]|1[3-9][0-9]|2[0-4][0-9]|25[0-5])\b/

请参阅this demo

答案 2 :(得分:0)

为什么不拆分它,并检查结尾处的整数?

def ips = ['10.100.1.121',
           '10.10.0.1',
           '10.100.1.119',
           '10.100.1.122']

def lastOctetGreaterThan(String ip, int number) {
    Integer.valueOf(ip.split(/\./).last()) > number
}

ips.each { ip ->
    println "$ip => ${lastOctetGreaterThan(ip, 120)}"
}

答案 3 :(得分:0)

你也可以这样做:

import java.net.InetAddress

def octet = InetAddress.getByName(ip)         // x.x.x.x -> InetAddress
                       .getAddress()          // InetAddress -> byte[]
                       .collect { it & 0xff } // positive numbers only

octet[3]就是你想要的。该代码也适用于IPv6。