检查包含3个连续字母和2个数字的字符串

时间:2012-11-30 23:27:55

标签: javascript regex

我似乎无法绕过这一个,并认为我会在这里寻求帮助!

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

这是我到目前为止所做的,但我相信它需要一些调整:
    / [A-Z] {3} [0-9] [0-9] / I

2 个答案:

答案 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/

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