用于Java验证的Regexp

时间:2017-01-09 21:36:57

标签: java regex validation

我正在尝试编写一个RegEx用于密码验证,但我无法弄清楚如何正确地执行此操作。 到目前为止,我的RegEx看起来像:

regexp = "^(?=.*[0-9]){1,3}(?=.*[a-zA-Z]){1,3}(?=\\s+$)$"

关于密码规​​则:

A)必须包括数字,大写和小写字母。

B)一行中的字母或数字必须小于4.(例如,不允许使用1234和dcba)

C)相同字符的数量不超过3.(例如,不允许使用aaaa和0000)
感谢。

2 个答案:

答案 0 :(得分:1)

我认为用单一的正则表达式来检查它是不可能的 即使有可能正则表达式会很长且不可读。

这里有一些原因:

  • A)不,因为订单不固定(是吗?)
  • B)你必须把所有可能性写下来(见A)
  • C)正则表达式不能计算(参见A)

你应该检查所有额外的东西(例如在方法中),如果它是正确的,如果你把所有你的有效性合并。

例如对于C:拆分为字符并计算它们 性能改进的提示:如果你检查一个并且它是假的 - 不要检查其他的(也在方法本身)。


一般正则表达式是一个表达式,用于检查字符串是否具有正确顺序的正确字符

因此,您可以检查它是否是有效的http(s)请求,因为订单已修复且只有域发生更改。但(简单)基本是:http +可选s + // +最少3个字符(特定一个)+ . +最少3个字符(特定一个)。<登记/> Here are some other good examples.

答案 1 :(得分:0)

我不相信只用一个正则表达式就可以做到这一点。而是提出一种扫描字符串(密码)并验证您对所述密码的要求的算法。