Java 如何验证ip是否在白名单中

Java 如何验证ip是否在白名单中,java,ip,wildcard,Java,Ip,Wildcard,我有一个IP白名单,它是一个字符串数组,像{“192.168.1.1”,“172.8.9.9”,“198.2.3”,“89.90.9.9-78”},从这个数组中我们知道它包含带通配符的IP,以及89.90.9.9到89.90.9.78之间的IP,用“89.90.9.9-78”表示 问题是我如何判断一个ip在这个数组中,我可以使用正则表达式吗 我正在使用java 代码片段 我这样写代码` String[] ipWhiteList = {"192.168.1.1" ,"172.8.9.9", "19

我有一个IP白名单,它是一个字符串数组,像{“192.168.1.1”,“172.8.9.9”,“198.2.3”,“89.90.9.9-78”},从这个数组中我们知道它包含带通配符的IP,以及89.90.9.9到89.90.9.78之间的IP,用“89.90.9.9-78”表示

问题是我如何判断一个ip在这个数组中,我可以使用正则表达式吗

我正在使用java

代码片段 我这样写代码`

String[] ipWhiteList = {"192.168.1.1" ,"172.8.9.9", "198.2.3.", "89.90.9.9-78"};

    List<String> ipWithoutWildcard = new ArrayList<String>();
    List<String> ipWithWildcard = new ArrayList<String>();
    private void analyzeIPWhiteList(String[] ipWhiteList){
        for (String ip : ipWhiteList) {if(ip.endsWith("*")){
 ipWithWildcard.add(ip.substring(0,ip.lastIndexOf(".")));
                break;
            }
            if(ip.contains("-")){
                String partionOfIP = ip.substring(0,ip.lastIndexOf("-"));
                int ipBegin = Integer.parseInt(ip.substring(ip.lastIndexOf(".")+1,ip.lastIndexOf("-")));
                int ipEnd = Integer.parseInt(ip.substring(ip.lastIndexOf("-")+1));
                for (int index=ipBegin; index<=ipEnd; index++) {
                    ipWithoutWildcard.add(partionOfIP+"."+ index);
                }
                break;
            }
            ipWithoutWildcard.add(ip);
        }
    }

    private boolean isExist(String ip,List<String> ipWithoutWildcard,List<String> ipWithWildcard){
        //compare the ip in  ipWithoutWildcard and ipWithWildcard
        return false;
    }
String[]ipWhiteList={“192.168.1.1”、“172.8.9.9”、“198.2.3”、“89.90.9.9-78”};
List ipwithoutsildcard=new ArrayList();
List ipWithWildcard=new ArrayList();
私有void analyzeIPWhiteList(字符串[]ipWhiteList){
for(stringip:ipWhiteList){if(ip.endsWith(“*”)){
ipWithWildcard.add(ip.substring(0,ip.lastIndexOf(“.”));
打破
}
如果(ip.包含(“-”)){
字符串partionOfIP=ip.substring(0,ip.lastIndexOf(“-”);
int ipBegin=Integer.parseInt(ip.substring(ip.lastIndexOf(“.”+1,ip.lastIndexOf(“-”));
int-ipEnd=Integer.parseInt(ip.substring(ip.lastIndexOf(“-”)+1));

对于(int index=ipBegin;indexies,你可以使用regex。更好的问题:你试过什么?@Maroun Maroun,我如何使用regex实现这个,我会为此写一个很长的列表,比如192.168.1.1 | 172.8.9.9 | 198.2.3.\d…@antoh我已经写了代码片段,想在这个白名单中比较ip和ip,但你知道它没有多功能性。)告诉我们,你到底是在哪里被绊倒的。