我正在构建一个密码强度验证器,以检查密码是否包含小写和大写字符。我为此使用正则表达式,当提供的密码字符串未定义时会得到意外的结果-请参见下面的屏幕截图。我希望两个检查都返回false,但第一个返回true。
为什么第一张支票返回true?
最佳答案
Javascript将尝试将test
的参数转换为字符串(如果不是一个字符串)。因此,由于:
String(undefined) === "undefined"
您的第一个正则表达式为true,因为
"undefined"
包含一个或多个小写字母。第二个是假的,因为没有大写字母。您甚至可以通过以下方式验证这一点:
/^undefined$/.test()
返回
true
。