我正在尝试使用正则表达式检查密码是否为字母数字,但没有得到我期望的结果。下面的代码有什么问题?
boolean passwordOnlyAlphaNumericCheck = false;
Pattern patternAlphaNumericCheck = Pattern.compile("^[a-zA-Z0-9]$");
Matcher matcherAlphaNumericCheck = patternAlphaNumericCheck.matcher(login.getPassword());
if(matcherAlphaNumericCheck.find())
passwordOnlyAlphaNumericCheck = true;
Run Code Online (Sandbox Code Playgroud)
感谢帮助
您需要添加符合您要求的量词:*- 0 次或多次出现或+- 1 次或多次出现。您也可以省略^and$并使用String.matches():
boolean passwordOnlyAlphaNumericCheck = false;
if(login.getPassword().matches("[a-zA-Z0-9]*"))
passwordOnlyAlphaNumericCheck = true;
Run Code Online (Sandbox Code Playgroud)
匹配所有Unicode字母,使用\p{L}类(也许,\p{M}匹配变音符号)"[\\p{L}\\p{M}0-9]+"。
之间有什么区别
login.getPassword().matches("[0-9a-zA-Z]*");和login.getPassword().matches("[0-9a-zA-Z]");?
.matches("[0-9a-zA-Z]")如果整个字符串仅包含1 位数字或字母,则仅返回 true 。所述*在[0-9a-zA-Z]*将允许一个空字符串,或字符串具有零个或更多个字母/数字。
| 归档时间: |
|
| 查看次数: |
12758 次 |
| 最近记录: |