【问题标题】:password validation not working correctly密码验证无法正常工作
【发布时间】:2020-07-08 08:12:56
【问题描述】:

我正在使用此代码来验证用户是否输入了所有字符。此论坛提供了多种解决方案,但无法找到我的问题的答案。

问题1:当输入的密码是“aaBB11@@”这种类型时,它验证并返回ok,而“11aaBB@@”则出错。用不同的模式进行了测试,但找不到正确的字符串。

问题2:我们能否将布尔值(真/假)作为返回值。我猜 matcher.matches() 是布尔值,但我不确定。

    public boolean isValidPassword(final String password) {

    Pattern pattern;
    Matcher matcher;

    final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{6,}$";

    pattern = Pattern.compile(PASSWORD_PATTERN);
    matcher = pattern.matcher(password);

    return matcher.matches();

}

不知道我哪里错了!

【问题讨论】:

  • 尝试--> PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"; 然后return PASSWORD_PATTERN.matches(password);
  • 更改了 PASSWORD_PATTERN,它起作用了,返回总是假的。
  • 尝试 --> 像这样定义模式 --> private static final String PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"; outside isvalidpassword

标签: java android


【解决方案1】:

看看Regex101

右上角,它将正则表达式的每个部分分解为步骤。

右下角还有对正则表达式模式的引用 - 您甚至可以实时测试正则表达式并导出工作代码。

【讨论】:

  • 感谢您的建议。我能理解评价。
猜你喜欢
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多