有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中使用通配符(仅限最后一个索引)验证ip地址的正则表达式

我似乎无法获得正确的正则表达式来验证IP地址,包括对通配符(*)的支持,它只能出现在末尾(最后一个索引)意味着*(星号)只能在第三个“.”之后使用(点)。例如:

有效IP

  • 0.0.0.*
  • 255.255.255.*

无效IP

  • 0.*
  • 255.*
  • 256.*
  • 0.0.*
  • 255.255.*
  • 256.256.*

共 (3) 个答案

  1. # 1 楼答案

    您可以使用以下代码来识别IP地址

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class IPAddressValidator{
    
        private Pattern pattern;
        private Matcher matcher;
    
        private static final String IPADDRESS_PATTERN =
            "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
    
        public IPAddressValidator(){
          pattern = Pattern.compile(IPADDRESS_PATTERN);
        }
    
       /**
        * Validate ip address with regular expression
        * @param ip ip address for validation
        * @return true valid ip address, false invalid ip address
        */
        public boolean validate(final String ip){
          matcher = pattern.matcher(ip);
          return matcher.matches();
        }
    }
    

    可以根据您的要求更改正则表达式

  2. # 2 楼答案

    String regex = "^((0|255)\\.){3}([0-9]|[1-9][0-9]|[1-2][0-5][0-5])$";
    
  3. # 3 楼答案

    像这样的东西应该可以做到:

    ^(?:(?: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]?|\*)$
    

    我认为这一点相当准确