java正则表达式匹配字母数字字符串

Sai*_*klu 1 java regex match

我正在尝试使用正则表达式检查密码是否为字母数字,但没有得到我期望的结果。下面的代码有什么问题?

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)

感谢帮助

Wik*_*żew 6

您需要添加符合您要求的量词:*- 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]*将允许一个空字符串,或字符串具有零个或更多个字母/数字。