我在 android 中有一个 EditText 字段。密码应包含最少 4 个字符,最多 20 个字符,开头或中间不带空格。示例 blankspaceRaghu 和 RaghublankspaceRaghu 不应被允许。
Pass= password.getText().toString();
Pattern p= Pattern.compile("[^\\S]+[a-z,A-Z]+");
Matcher m = p.matcher(Pass);
Pass= mEditTextPassword.getText().toString();
Pattern p = Pattern.compile("^[A-Za-z0-9]{4,20}$");
Matcher m = p.matcher(Pass);
更新 - 最后允许空格....
Pass= password.getText().toString();
Pattern p= Pattern.compile("((?!\\s)\\A)(\\s|(?<!\\s)\\S){4,20}\\Z");
Matcher m = p.matcher(Pass);
这匹配
我认为您想与\\A\\S{4,20}\\Z
. 那是任何非空白字符,长度在 4 到 20 之间,匹配整个字符串。
试试这个模式:
"\\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的文档中找到
你可以尝试否定匹配——这样你就不必对否定字符类大惊小怪了。
将密码与/\s/
. 如果匹配,则其中某处有空格,应该被拒绝。如果没有,你可以自由离开。