android中的正则表达式,没有空格的密码

时间:2012-09-05 14:01:51

标签: java android

我在android中有一个EditText字段。密码应包含最少4个字符和最多20个字符,在开头或中间没有空格。例如blankspaceRaghu和RaghublankspaceRaghu不应该被贬低。

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

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

Matcher m = p.matcher(Pass);

5 个答案:

答案 0 :(得分:3)

Pass= mEditTextPassword.getText().toString();
Pattern p = Pattern.compile("^[A-Za-z0-9]{4,20}$"); 
Matcher m = p.matcher(Pass);

答案 1 :(得分:1)

尝试这种模式:

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

\\A代表“输入的开头”。

\\w是任何字母数字(a-z,A-Z,0-9)字符。如果您不允许数字,请将其替换为[a-zA-Z]

{4,20}表示之前连续4到20次的事情。

\\z是字符串的结尾。如果在密码字符串后面允许使用空格,则没有提到。如果要允许此操作,请在\\s*之前插入\\z(无任何内容或任意数量的空格)。

有关正则表达式语法的更多信息,请参阅java.util.regex.Pattern

的文档

答案 2 :(得分:1)

我认为您希望与\\A\\S{4,20}\\Z的RegEx相匹配。这是任何非空白字符,长度在4到20之间,与整个字符串匹配。

答案 3 :(得分:1)

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

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

匹配

  • 匹配字符串的开头,只要它后面没有空格
  • 即可
  • 匹配4到20次空格或非空格,前提是它没有空格前缀
  • 匹配字符串结尾

答案 4 :(得分:0)

你可以尝试负匹配 - 这样你就不必为否定的字符类而烦恼。

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

相关问题