我在android中有一个EditText,其中应该输入IP地址。单击按钮,我想检查从EditText检索的文本是否执行:
不是空的
仅包含数字
"."
我有这个if else条件来检查是否允许用户进入下一个活动,但它仍然有一些错误。我不知道如何只允许期间
if(((ip.length() != 0) || ip.contains(" ") == false || ip.matches("[a-z]+") == false) && (ip.matches("[0-9]+") && ip.contains(".")))
{
next = false;
}
else
{
next = true;
}
答案 0 :(得分:2)
您可以使用此正则表达式检查输入
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
编辑:
不要使用正则表达式,因为当IPv6到来时会出现问题,请改用
答案 1 :(得分:1)
使用正则表达式非常简单
private static final String 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 static boolean validate(final String ip){ Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = pattern.matcher(ip); return matcher.matches(); }
我希望它会对你有所帮助。
感谢。
答案 2 :(得分:0)
这将有效:
<EditText
android:inputType="number"
android:digits="0123456789."
/>
仅允许numbers and .
答案 3 :(得分:0)
import android.util.Patterns
...
boolean isIPvalid (String input) {
return Patterns.IP_ADDRESS.matcher(input).matches();
}