我正在构建一个密码强度验证器,以检查密码是否包含小写和大写字符。我为此使用正则表达式,当提供的密码字符串未定义时会得到意外的结果-请参见下面的屏幕截图。我希望两个检查都返回false,但第一个返回true。

为什么第一张支票返回true?
javascript - 在对`undefined'进行测试时,RegExp提供了意外的结果-LMLPHP

最佳答案

Javascript将尝试将test的参数转换为字符串(如果不是一个字符串)。因此,由于:

String(undefined) === "undefined"


您的第一个正则表达式为true,因为"undefined"包含一个或多个小写字母。第二个是假的,因为没有大写字母。

您甚至可以通过以下方式验证这一点:

/^undefined$/.test()


返回true

10-04 22:35
查看更多