3

我似乎无法解决这个问题,并想在这里寻求帮助!

基本上我正在验证密码字段,要求如下:
- 必须包含 3 个连续字母
- 必须包含至少 2 个数字
- 可以是任何顺序(例如 1abc342、abc24g3、11abcsjf)

这是我到目前为止所拥有的,但我认为它需要一些调整:
/[az]{3}[0-9][0-9]/i

4

2 回答 2

2

您描述的正则表达式可以这样写:

/(?=.*?[a-z]{3})(?=.*?\d.*?\d)/

第一个前瞻在任意位置连续搜索三个字母。第二个前瞻查找任何位置的数字,然后是更前面的数字。

于 2012-11-30T23:31:53.507 回答
1

您可能应该在两个单独的正则表达式中执行此操作:一个测试三个连续的字母,一个测试至少两个数字:

/[a-z]{3}/i
/\d.*d/

确保满足这两个条件。您可以使用前瞻将其组合成一个正则表达式,但我认为两个正则表达式是更清晰的代码和更好的解决方案。

但是,如果我可以就此事发表一些意见:除非您无法控制此(客户指定此),否则我强烈建议不要施加这样的密码限制。它们实际上使您的密码系统的安全性大大降低,而不是更安全。一些关于为什么的阅读:

http://jimpravetz.com/blog/2011/06/cheap-gpus-are-rendering-strong-passwords-use/

http://jimpravetz.com/blog/2012/02/stupid-password-rules/

于 2012-11-30T23:30:32.593 回答