4

IPアドレスを入力することになっているAndroidのEditTextがあります。ボタンをクリックすると、EditTextから取得したテキストが実行するかどうかを確認したいと思います。

  • スペースがありません
  • 文字がない
  • 空ではない

  • 数字のみを含む

  • ピリオドのみが含まれます"."

ユーザーが次のアクティビティに進むことが許可されているかどうかを確認するためのifelse条件がありますが、まだいくつかのバグがあります。生理のみを許可する方法がわかりません

                    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

これは機能します:

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

のみ許可numbers and .

于 2013-02-06T12:56:40.550 に答える
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 に答える