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