我需要验证,如果在文本编辑输入的字符串是一个网络地址,例如。 “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;
}
方法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;
}
第二种方法也不能wotk,但即使那样,它不会是能够验证网络ADRESS。
所以,有什么方法可以让我对于这此情况下,验证字符串?
编辑:阅读正则表达式之后我试过这个方法也:
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;
}
}
但它似乎返回false所有的时间。