我在android中有一个EditText字段。密码应包含最少4个字符和最多20个字符,在开头或中间没有空格。例如blankspaceRaghu和RaghublankspaceRaghu不应该被贬低。
Pass= password.getText().toString();
Pattern p= Pattern.compile("[^\\S]+[a-z,A-Z]+");
Matcher m = p.matcher(Pass);
答案 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 :(得分:0)
你可以尝试负匹配 - 这样你就不必为否定的字符类而烦恼。
将密码与/\s/
匹配。如果匹配,则在其中的某处有空格,应该被拒绝。如果没有,你可以自由地去。