当前位置: 首页 > 知识库问答 >
问题:

密码帕特伦与匹配器类不匹配

梁丘宏硕
2023-03-14

我的密码应类似于:

“密码应包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,长度至少为八个字符”

我使用的模式是:^(? =.*[a-z])(? =. *[A-Z])(?=.*\\d)(? =. *[$@$#! %*?

因此,我在我的Constant.java文件中创建了如下函数:

public static Boolean passwordMatcher(TextInputLayout edtText,String string) {
    Pattern pattern = Pattern.compile("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[$@$#!%*?&])[A-Za-z\\\\d$@$#!%*?&]{8,}");
    Matcher matcher = pattern.matcher(edtText.getEditText().getText().toString());
    boolean isMatched = matcher.matches();
    if (isMatched) {
        return true;
    }
    if (!isMatched) {
        edtText.setErrorEnabled(true);
        edtText.setError("" + string);
        edtText.setFocusable(true);
        return false;
    }
    return true;
}

在我的主活动中。我检查验证的java文件如下:

if (!Constant.passwordMatcher(edtPassword, mContext.getResources().getString(R.string.error_activity_signup_password_invalid))) {
    return;
}

但是,即使我尝试过,我也不会成功:“Jaimin123#”作为我的密码。总是在我的文本输入布局中设置错误。

问题可能是什么?

谢谢。


共有3个答案

沈华晖
2023-03-14

试试这段代码:

public void checkPattern(String password) {     
    Pattern pattern = Pattern.compile("(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*\\W).{8,}");
    Matcher matcher = pattern.matcher(password);
    boolean isMatched = matcher.matches();
    System.out.println(isMatched);
}
堵凯
2023-03-14

试试这个

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@#!%*?&]).{8,}$

如果您不想在密码中使用空格,还应包括(?=\S$)

濮阳国兴
2023-03-14

尝试使用下面的正则表达式进行密码匹配。

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

此正则表达式将检查以下规则:

  1. 至少一个大写字母
  2. 至少一个小写字母
  3. 至少一个数字
  4. 至少一个特殊字符
  5. 最小长度 8 英寸
 类似资料:
  • 我是不是漏掉了什么?提前感谢!

  • 我正在尝试实现一段代码,检查hashed_password和user_name是否匹配。下面的代码首先检查用户名是否有效,如果有效,代码将检查密码是否与用户名匹配。但是,这是一段代码不起作用。我可以从数据库输入正确的用户名和相应的正确密码,它会显示正确的消息。但是如果我从数据库输入正确的用户名,但密码不正确,它仍然会显示。感谢任何帮助!

  • 我和ElasticSearch一起工作。当我执行此查询时: 我得到了我想要的(所有的结果,其中有参考黑莓,但不是Q10)。 但是,我想限制搜索的字段只限于“title”字段。例如,_source文档有标题、正文、标签等,我只想搜索标题。ElasticSearch“匹配”似乎很适合我... 虽然这只成功地搜索了标题,但它仍然返回标题中带有Q10的结果,这与上面的搜索不同。 我正在看比赛文档,但似乎不

  • 我目前正在学习Spring Boot framework,并试图按照baledung页面上的指南创建一个自定义字段匹配验证器。 我的代码实际上和上面的页面一样,唯一不同的是我用BCryptPasswordEncoder编码了密码。 这是我的用户类。 控制器: 注册用户方法: 我收到了以下错误: 我认为编码的密码正在与未编码的验证密码进行比较。这就是为什么我收到这个错误或?我怎么才能修好它?如果我也

  • 我在这里复制代码;https://developer.android.com/codelabs/kotlin-android-training-view-model#5 但我从DataBindingUtil中得到了一个类型不匹配。充气方法。正在返回ViewDataBinding!,当需要FragmentPlayBinding时。 我https://github.com/google-develop

  • 问题内容: 编写内部API时遇到以下错误。我正在尝试以以下方式读取值(SQL Server 2012): 现在,虽然看起来有些奇怪,但我以这种方式阅读的原因是因为它是我编写的包装程序的一部分,我们使用它来加快sql的读写速度。它接受一个匿名对象,并根据属性名称或属性名称将所有sql值读入其中。 这适用于除以外的所有内容。我进行了类型比较,它也同样失败,因此很hacky,我什至无法检查该列是否为类型