检查是否字符串是Android上的网址或IP(Checking if string is web a

2019-09-20 10:51发布

我需要验证,如果在文本编辑输入的字符串是一个网络地址,例如。 “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所有的时间。

Answer 1:

简短的回答:尝试使用正则表达式!

编辑:

if(textEdit1.getText().matches(REGEX_URL)) {
    //DO URL THINGS
}

if(textEdit1.getText().matches(REGEX_IPADDRES)) {
    //DO IP THINGS
}

如果谷歌你可以找到IP地址和URL正确的正则表达式的串...

注:对于网址正则表达式可以为你想要的东西不同,你只需要HTTP:// https://或所有有效的网址(例如市场://)...



Answer 2:

Patterns.IP_ADDRESS.matcher(URL).matches();



Answer 3:

怎么样简单的方法? 检测如果是IP地址,例如

public static boolean isIP(String input) {

        if (input.contains(".") && input.length()>1) {
            return TextUtils.isDigitsOnly( input.replace(".", "").trim() );
        }
        else {
            return false;
        }
    }


文章来源: Checking if string is web address or ip on android