如何在android中的EditText中检查符号?

时间:2013-02-06 12:05:42

标签: android android-edittext

我在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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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();             
  }

我希望它会对你有所帮助。

感谢。

答案 2 :(得分:0)

这将有效:

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

仅允许numbers and .

答案 3 :(得分:0)

使用android.util.Patterns

可以做到这一点
import android.util.Patterns
...
boolean isIPvalid (String input) {
    return Patterns.IP_ADDRESS.matcher(input).matches();
}