密码验证代码未通过所有随机测试,不明白为什么?

时间:2018-09-28 22:09:34

标签: javascript regex string validation

我是编码/编程的新手,并且一直在尝试尽可能多地解决codewars.com上的问题

我遇到了以下regex pw验证问题 https://www.codewars.com/kata/regex-password-validation/train/javascript

您需要编写用于验证密码的正则表达式,以确保其符合以下条件:

至少六个字符长
包含小写字母
包含大写字母
包含一个数字
有效密码只能是字母数字字符。

这是我的代码

function validate(password){
  return (/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{6,}).*/g.test(password));
}

我通过了所有示例测试以及大多数随机测试,但是有两个我一直失败。我无法看到输入,因此我不知道为什么我失败了。任何建议都将不胜感激:)

2 个答案:

答案 0 :(得分:1)

您没有遵循此规则:

  

有效密码只能是字母数字字符

只要其他规则通过,您就允许它们包含任何字符。将末尾的.*更改为^[a-zA-Z0-9]*$,以确保每个字符都是字母数字。

答案 1 :(得分:0)

我看到您的Regex有一个问题:它允许any个字符输入密码(在检查是否有一个小写字母,一个大写字母和一个数字之后)。 不知道为什么测试失败,我们至少可以解决此问题:

function validate(password){
  return (/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{6,}*/.test(password));
}