3

我需要验证在 TextEdit 中输入的字符串是否是网址,例如。“www.stackoverflow.com”或 IP 地址,例如。“64.34.119.12”。我试过这两种方法都没有成功。我有名为 ip 的私有类变量。

方法一:

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;
    }

这第二种方法也不起作用,但即使这样做,它也无法验证网址。

那么有什么方法可以验证这两种情况的字符串吗?

编辑:阅读有关正则表达式后,我也尝试了这种方法:

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;
    }           
    }

但它似乎一直返回假。

4

4 回答 4

5

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

编辑:

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

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

如果你用谷歌搜索,你可以找到 IP 地址和 URL 的正确正则表达式字符串......

注意:网址的正则表达式可以根据您的需要而有所不同,您只需要 http:// https:// 还是所有有效的网址(如市场://)...

于 2012-07-30T14:08:49.000 回答
4

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

于 2016-09-17T13:01:38.213 回答
0

在 Kotlin 中验证 IP 地址,返回 true 或 false

fun isValidIPAddress(ip:String):Boolean {
   val reg0To255 = ("(\\d{1,2}|(0|1)\\" + "d{2}|2[0-4]\\d|25[0-5])").toRegex()
   return reg0To255.matches(ip)
}

val inputIP = "127.1.1.775"
println("Input: " + inputIP)
println("Output: " + isValidIPAddress(inputIP))

输入:127.1.1.775 输出:假

于 2021-03-10T10:33:56.420 回答
-3

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

public static boolean isIP(String input) {

        if (input.contains(".") && input.length()>1) {
            return TextUtils.isDigitsOnly( input.replace(".", "").trim() );
        }
        else {
            return false;
        }
    }
于 2012-07-30T16:57:47.360 回答