大家好,我在android(作为客户端)和PC(作为服务器)之间使用简单的套接字通信.我正在使用EditText作为IP地址.我想验证在EditText字段中输入的IP地址.可以请一些人帮助我..我需要它.提前致谢.
小智 37
如果您的目标是API级别8,则可以使用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
}
Run Code Online (Sandbox Code Playgroud)
Gra*_*eme 16
要检查输入的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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
阅读有关Patterns.IP_ADDRESS的描述,我发现它将被弃用(在 API 31 上),并且需要使用另一个函数(InetAddresses.isNumericAddress)来检查 ip 地址。
结果:
fun isIpValid(ip: String): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
InetAddresses.isNumericAddress(ip)
} else {
Patterns.IP_ADDRESS.matcher(ip).matches()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18266 次 |
| 最近记录: |