我们说我有5个条件,我用前瞻检查。我会打电话给他们
a, b, c, d, e
这将是我的正则表达式:
^(?=.*[a])(?=.*[b])(?=.*[c])(?=.*[d])(?=.*[e]).*$
这将匹配a,b,c,d,e的所有排列,但我希望匹配至少3个中的3个(不排除为' hvd'指出)
这意味着这将通过:
abc
abcde
abbbbbe
abccee
cddbbbbbeee
但这不是
aaaaa
bbbaaaaa
编辑: 真正的用法是密码策略 - 5个条件(小写,大写,特殊字符,数字等),你必须符合x条件的条件。
在代码中很容易完成,但这是推动正则表达式极限的理论问题。
答案 0 :(得分:1)
这基本上具有5种可能模式的每种排列(但针对代码长度进行了优化)。
很难100%确定它的工作正常,但我想我已经有了它。 ^^