我似乎无法解决这个问题,并想在这里寻求帮助!
基本上我正在验证密码字段,要求如下:
- 必须包含 3 个连续字母
- 必须包含至少 2 个数字
- 可以是任何顺序(例如 1abc342、abc24g3、11abcsjf)
这是我到目前为止所拥有的,但我认为它需要一些调整:
/[az]{3}[0-9][0-9]/i
我似乎无法解决这个问题,并想在这里寻求帮助!
基本上我正在验证密码字段,要求如下:
- 必须包含 3 个连续字母
- 必须包含至少 2 个数字
- 可以是任何顺序(例如 1abc342、abc24g3、11abcsjf)
这是我到目前为止所拥有的,但我认为它需要一些调整:
/[az]{3}[0-9][0-9]/i
您描述的正则表达式可以这样写:
/(?=.*?[a-z]{3})(?=.*?\d.*?\d)/
第一个前瞻在任意位置连续搜索三个字母。第二个前瞻查找任何位置的数字,然后是更前面的数字。
您可能应该在两个单独的正则表达式中执行此操作:一个测试三个连续的字母,一个测试至少两个数字:
/[a-z]{3}/i
/\d.*d/
确保满足这两个条件。您可以使用前瞻将其组合成一个正则表达式,但我认为两个正则表达式是更清晰的代码和更好的解决方案。
但是,如果我可以就此事发表一些意见:除非您无法控制此(客户指定此),否则我强烈建议不要施加这样的密码限制。它们实际上使您的密码系统的安全性大大降低,而不是更安全。一些关于为什么的阅读:
http://jimpravetz.com/blog/2011/06/cheap-gpus-are-rendering-strong-passwords-use/