【发布时间】:2015-04-20 18:47:41
【问题描述】:
System.out.println(Pattern.matches("[A-Z]{1,}[a-z]{1,}[0-9]{2,}[@#$%]+[ ]*", "DEFabc45$ "));
但是当我传递passW@ord45 之类的字符串时它不起作用。意思是我不应该遵循这里写的正则表达式顺序模式。
以下是下面给出的条件:
写一个函数boolean isValidPassword (String password)一个密码如果满足以下条件是有效的:
- 密码长度必须大于10(不计 空格)。
- 密码必须至少包含一个大写字母和一个小写字母
- 密码必须至少包含 2 位数字,如果没有 2 位数字,请查看下一个条件。
- 密码必须至少包含给定集合中的一个特殊字符 - {$, @, _, -, ., /}
【问题讨论】:
-
Regex 在这里是错误的工具 - 虽然您可能能够对给定的要求进行编码,但它会导致非常复杂的表达式。几乎可以肯定的是,当您稍后再回来时,它几乎无法理解并因此无法维护。使用 Java 中的一些简单的代码语句会更好地解决这个问题,而且可读性要好得多。
-
通常我都是正则表达式,但一旦你进入“如果不是这样,那么”的逻辑,正则表达式可能不是方式。
-
@Srb1313711:不要假设,学习,测试自己,分析情况是不重复“主流断言”的唯一方法。
-
@CasimiretHippolyte 我没有假设任何事情我什至没有说这是不可能的,我只是说可能有更好的方法来解决这个问题