RegEx使用Java中的通配符(仅限最后一个索引)验证IP地址

时间:2016-12-25 13:42:25

标签: java regex validation

我似乎无法获得正确的RegEx来验证IP地址,包括支持通配符char(*),它只能在最后(最后一个索引)表示*(星号)只能在第3个之后可用'。'(点)。例如:

有效IP

  
      
  • 0.0.0。*
  •   
  • 255.255.255。*
  •   

无效的IP

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用以下代码识别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();
    }
}

可以根据您的要求更改Regex

答案 2 :(得分:0)

这样的事情应该这样做:

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

我想为此目的准确无误