我有一个EditText
用户应该放置 IP 地址的位置,例如192.168.21.212。如何为此添加验证?我试过
android:inputType="numberDecimal"
但它只允许一个.(点)。如何让它允许三个点?
我有一个EditText
用户应该放置 IP 地址的位置,例如192.168.21.212。如何为此添加验证?我试过
android:inputType="numberDecimal"
但它只允许一个.(点)。如何让它允许三个点?
在 xml 中的 EditText 中,添加android:digits="0123456789.,! etc"
试试这个 :
<EditText
android:id="@+id/ip_ed_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="number" >
</EditText>
您需要Textwatcher
该 textview 对象。您可以通过
文本观察器
界面。
Android 中没有用于 IP 地址验证的 inputType。
您需要创建自己的 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);
当用户提交编辑文本时,您可以在代码中检查它。
可能是这样的吗?:
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;
}
}
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();
}