我有一个EditText
,用户应该在其中输入 192.168.21.212 等IP地址。如何为此添加验证?我试过了
android:inputType="numberDecimal"
但它只允许一个。(点)。如何让它允许三个点?
答案 0 :(得分:3)
在xml的EditText中,添加android:digits="0123456789.,! etc"
答案 1 :(得分:3)
试试这个:
<EditText
android:id="@+id/ip_ed_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="number" >
</EditText>
答案 2 :(得分:2)
您可以使用具有InetAddressValidator
的Apache Commons isValidInet4Address(String)类答案 3 :(得分:0)
对于该textview对象,您需要Textwatcher
。您可以通过
TextWatcher
inteface。
android中没有用于IP地址验证的inputType。
希望它有所帮助。
答案 4 :(得分:0)
您需要创建自己的InputFilter:http://developer.android.com/reference/android/text/InputFilter.html
EditText text = new EditText(this);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (end > start) {
String destTxt = dest.toString();
String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend);
if (!resultingTxt.matches ("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) {
return "";
} else {
String[] splits = resultingTxt.split("\\.");
for (int i=0; i<splits.length; i++) {
if (Integer.valueOf(splits[i]) > 255) {
return "";
}
}
}
}
return null;
}
};
text.setFilters(filters);
答案 5 :(得分:0)
当用户提交edittext时,您可以在代码中查看它。
可能是这样的吗?:public boolean DotValidator(String text) {
int anumOfDots = 0;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == '.') {
anumOfDots++;
}
}
if (anumOfDots == 3) {
return true;
} else {
return false;
}
}
答案 6 :(得分:0)
IP地址验证器
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();
}