4

我在 android 中有一个 EditText,应该输入 IP 地址。单击按钮时,我想检查从 EditText 检索到的文本是否:

  • 没有任何空格
  • 没有任何字母
  • 不是空的

  • 只包含数字

  • 并且只包含句点"."

我有这个 if else 条件来检查用户是否被允许进入下一个活动,但它仍然有一些错误。我不知道如何只允许月经

                    if(((ip.length() != 0) || ip.contains(" ") == false || ip.matches("[a-z]+") == false) && (ip.matches("[0-9]+") && ip.contains(".")))
                    {
                        next = false;
                    }
                    else
                    {
                        next = true;
                    }
4

4 回答 4

2

您可以使用此正则表达式来检查输入

"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"

编辑:

不要使用正则表达式,因为当 IPv6 到来时事情会中断,请改用它

http://commons.apache.org/validator/apidocs/org/apache/commons/validator/routines/InetAddressValidator.html

于 2013-02-06T12:09:17.230 回答
1

使用正则表达式非常简单

private static final String PATTERN = 
    "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

 public static boolean validate(final String ip){          

  Pattern pattern = Pattern.compile(PATTERN);
  Matcher matcher = pattern.matcher(ip);
  return matcher.matches();             
  }

我希望它会帮助你。

谢谢。

于 2013-02-06T12:10:40.700 回答
0

您可以通过使用android.util.Patterns做到这一点非常优雅:

import android.util.Patterns
...
boolean isIPvalid (String input) {
    return Patterns.IP_ADDRESS.matcher(input).matches();
}
于 2015-04-06T14:04:07.317 回答
0

这将起作用:

<EditText
    android:inputType="number"
    android:digits="0123456789."
/>

只允许numbers and .

于 2013-02-06T12:56:40.550 回答