我似乎无法获得正确的RegEx来验证IP地址,包括支持通配符char(*),它只能在最后(最后一个索引)表示*(星号)只能在第3个之后可用'。'(点)。例如:
有效IP
- 0.0.0。*
- 255.255.255。*
无效的IP
- 0。*
- 255 *
- 256 *
- 0.0 *
- 255.255。*
- 256.256。*
答案 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]?|\*)$
我想为此目的准确无误