当前位置: 首页 > 面试题库 >

在Java中验证IPv4字符串

麻茂材
2023-03-14
问题内容

Bellow方法正在验证字符串是否为正确的IPv4地址,如果有效,则返回true。regex和优雅的任何改进将不胜感激:

public static boolean validIP(String ip) {
    if (ip == null || ip.isEmpty()) return false;
    ip = ip.trim();
    if ((ip.length() < 6) & (ip.length() > 15)) return false;

    try {
        Pattern pattern = Pattern.compile("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
        Matcher matcher = pattern.matcher(ip);
        return matcher.matches();
    } catch (PatternSyntaxException ex) {
        return false;
    }
}

问题答案:

这是一种易于阅读,效率稍低的方法。

public static boolean validIP (String ip) {
    try {
        if ( ip == null || ip.isEmpty() ) {
            return false;
        }

        String[] parts = ip.split( "\\." );
        if ( parts.length != 4 ) {
            return false;
        }

        for ( String s : parts ) {
            int i = Integer.parseInt( s );
            if ( (i < 0) || (i > 255) ) {
                return false;
            }
        }
        if ( ip.endsWith(".") ) {
            return false;
        }

        return true;
    } catch (NumberFormatException nfe) {
        return false;
    }
}


 类似资料:
  • 我有一个电子邮件地址字段,其中有一个客户端验证,不允许几个临时域,如tempmailder.com或dispostable.com. 在服务器端,我使用了fluent验证来指定验证规则。 web中不允许的临时域。将文件配置为逗号分隔的字符串。 我是否可以指定一种方法来验证用户根据不允许的电子邮件域列表输入的值。 谢啦

  • 问题内容: 因此,我几乎搜索了单词“ string”,“ python”,“ validate”,“ user input”等等的每个排列,但是我还没有找到一种适合我的解决方案。 我的目标是提示用户是否要使用字符串“ yes”和“ no”进行另一笔交易,我认为字符串比较在Python中是一个相当简单的过程,但是有些不起作用对。我使用的是Python 3.X,据我所知,输入应使用字符串而不使用原始输

  • 这是我刚接触Python时就一直在阅读的一本书中的一些代码……这一部分按它应该的方式工作 我的困境是…我需要验证输入是什么…因此,如果用户输入的是一个字符串(比如“五”而不是数字),而不是q或数字,它会告诉他们“很抱歉,“五”是无效的。请重试…然后它会再次提示用户输入。我是Python新手,一直在为这个简单的问题绞尽脑汁 *更新**因为我没有足够的积分来为我自己的问题添加答案,所以我在这里发布这个

  • 问题内容: 我很难找到最简单的方法来针对给定的JSON模式字符串验证JSON字符串(作为参考,这是在Java中运行在Android应用程序中)。 理想情况下,我只想传入JSON字符串和JSON模式字符串,并且它返回关于是否通过验证的布尔值。通过搜索,我发现了以下两个有前途的库可以完成此任务: http://jsontools.berlios.de/ https://github.com/fge/j

  • @target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})@retention(value=runtime)@documented@constraint(validatedby={})public@interface Min 带注释的元素必须是一个数值,该数值必须大于或等于指定的最小值。 支持的类型有: 注意,由于舍入错误

  • 情况是我必须检查一个数字签名: 字符串1“A1005056807CE11EE2B4CE0025305725CFRCN=KED,OU=I0020266601,OU=SAPWebAS,O=SAPTrustCommunity,C=DE20130611102236”通过PKCS#7签名并通过HTTP-URL发送给我。 我在BASE64中获得签名的内容(在代码字符串sc中查找)。 现在我必须检查,如果Str