我正在构建一个密码强度验证程序,用于检查密码是否包含小写和大写字符。我使用正则表达式并在提供密码字符串未定义时获得意外结果 - 请参阅下面的屏幕截图。我希望两个检查都返回 false ,但第一个返回 true 。
答案 0 :(得分:4)
如果不是一个字符串,Javascript将尝试将test
的参数转换为字符串。所以,自:
String(undefined) === "undefined"
您的第一个正则表达式为真,因为"undefined"
包含一个或多个小写字母。第二个是假的,因为没有大写字母。
您甚至可以通过注明
来验证这一点/^undefined$/.test()
返回true
。