Привет всем, Я использую простую связь сокетов между Android (как клиент) и ПК (как сервер). Я использую EditText для Ip-адреса. Я хочу проверить IP-адрес, который вводится в поле EditText. Может понравиться, кто-нибудь мне поможет.. Мне это нужно. Спасибо заранее.
Проверка IP-адреса в android
Ответ 1
Если вы нацеливаетесь на уровень API 8, вы можете использовать глобальное regex Patterns.IP_ADDRESS. Вы можете напрямую включить это регулярное выражение в свой проект, если вы нацеливаете устройство с помощью android < 2.2:
private static final Pattern IP_ADDRESS
= Pattern.compile(
"((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4]"
+ "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]"
+ "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}"
+ "|[1-9][0-9]|[0-9]))");
Matcher matcher = IP_ADDRESS.matcher("127.0.0.1");
if (matcher.matches()) {
// ip is correct
}
Ответ 2
Patterns.IP_ADDRESS.matcher(url).matches();
Ответ 3
Чтобы проверить IP-адрес при его вводе, вы можете использовать это вместо:
private static final Pattern PARTIAl_IP_ADDRESS =
Pattern.compile("^((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])\\.){0,3}"+
"((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])){0,1}$");
ipEditText.addTextChangedListener(new TextWatcher() {
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override public void beforeTextChanged(CharSequence s,int start,int count,int after) {}
private String mPreviousText = "";
@Override
public void afterTextChanged(Editable s) {
if(PARTIAl_IP_ADDRESS.matcher(s).matches()) {
mPreviousText = s.toString();
} else {
s.replace(0, s.length(), mPreviousText);
}
}
});