0

AndroidにEditTextフィールドがあります。パスワードには、先頭または中央にスペースを入れずに、最小4文字と最大20文字を含める必要があります。例blankspaceRaghuおよびRaghublankspaceRaghuは許可されるべきではありません。

Pass= password.getText().toString();    

Pattern p= Pattern.compile("[^\\S]+[a-z,A-Z]+");

Matcher m = p.matcher(Pass);
4

5 に答える 5

3
Pass= mEditTextPassword.getText().toString();
Pattern p = Pattern.compile("^[A-Za-z0-9]{4,20}$"); 
Matcher m = p.matcher(Pass);
于 2012-10-04T16:31:00.660 に答える
1

このパターンを試してください:

"\\A\\w{4,20}\\z"

\\A「入力の始まり」を表します。

\\w英数字(az、AZ、0-9)文字です。数字を許可しない場合は、次のように置き換えます[a-zA-Z]

{4,20}連続して4〜20回前のものを意味します。

\\z文字列の終わりです。パスワード文字列の後にスペースを許可するかどうかについては言及していません。\\s*これを許可する場合は、の前に(空白なしまたは任意の数の空白)を挿入し\\zます。

正規表現の構文の詳細については、java.util.regex.Patternのドキュメントを参照してください。

于 2012-09-05T14:24:25.920 に答える
1

の正規表現と一致させたいと思います\\A\\S{4,20}\\Z。これは、文字列全体に一致する4〜20の長さの空白以外の文字です。

于 2012-09-05T14:25:44.963 に答える
1

更新-スペースは最後に許可されます...。

Pass= password.getText().toString();    
Pattern p= Pattern.compile("((?!\\s)\\A)(\\s|(?<!\\s)\\S){4,20}\\Z");
Matcher m = p.matcher(Pass);

これは一致します

  • スペースが続かない限り、文字列の先頭に一致します
  • 接頭辞がスペースでない場合は、スペースまたは非スペースの4〜20回の出現に一致します
  • 文字列の終わりに一致
于 2012-09-05T14:31:43.673 に答える
0

否定マッチングを試すことができます。そうすれば、否定された文字クラスに煩わされる必要がなくなります。

パスワードをと照合し/\s/ます。一致する場合は、どこかにスペースがあり、拒否する必要があります。そうでない場合は、自由に行くことができます。

于 2012-09-05T14:21:21.457 に答える