Roh*_*ish 2 ip validation android ip-address
我需要验证在TextEdit中输入的字符串是否是Web地址,例如."www.stackoverflow.com"或IP地址,例如."64.34.119.12".我试过这两种方法没有成功.我有一个名为ip的私有类变量.
方法1:
public boolean isAdress(){
boolean isaddr = true;
try
{
ip = new NetTask().execute(""+textEdit1.getText()).get();
}
catch (Exception ex)
{
isaddr = false;
}
return isaddr;
}
Run Code Online (Sandbox Code Playgroud)
方法2是我在将其发送到NetTask之前检查字符串的方法.
public boolean isAdress(){
String adress = textEdit1.getText().toString();
boolean isaddr = true;
if (adress.length() > 0) {
String[] nums = adress.split(".");
if (nums.length == 4) {
for (String str : nums) {
int i = Integer.parseInt(str);
if ((i < 0) || (i > 255)) {
isaddr = false;
}
}
}
}
return isaddr;
}
Run Code Online (Sandbox Code Playgroud)
第二种方法也没有wotk,但即使它确实如此,它也无法验证网址.
那么有什么方法可以为这两种情况验证字符串?
编辑:阅读有关正则表达式后我也试过这个方法:
private String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
public boolean isAdress(){
String adress = textEdit1.getText().toString();
try {
Pattern patt = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = patt.matcher(adress);
return matcher.matches();
} catch (RuntimeException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎一直都是假的.
简短回答:尝试使用正则表达式!
编辑:
if(textEdit1.getText().matches(REGEX_URL)) {
//DO URL THINGS
}
if(textEdit1.getText().matches(REGEX_IPADDRES)) {
//DO IP THINGS
}
Run Code Online (Sandbox Code Playgroud)
如果你谷歌你可以找到IP地址和网址的正确REGEX字符串...
注:对于网址正则表达式可以为你想要的东西不同,你只需要HTTP:// https://或所有有效的网址(例如市场://)...
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |