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

更新 - 最后允许空格....

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 回答
1

我认为您想与\\A\\S{4,20}\\Z. 那是任何非空白字符,长度在 4 到 20 之间,匹配整个字符串。

于 2012-09-05T14:25:44.963 回答
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 回答
0

你可以尝试否定匹配——这样你就不必对否定字符类大惊小怪了。

将密码与/\s/. 如果匹配,则其中某处有空格,应该被拒绝。如果没有,你可以自由离开。

于 2012-09-05T14:21:21.457 回答