为什么javascript的.toUpperCase函数包含数字?

时间:2016-11-09 06:06:49

标签: javascript

当我在我的“密码”中输入数字时,没有大写错误消息。救命!!!您可以忽略大部分代码。我的问题是为什么当我在密码中输入数字时,控制台没有记录“密码不正确。请放一个大写字母。” (您输入密码的位置在代码的最后一行)感谢您的帮助!

var specialCharacters = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", 
"[", "]"];

function isPasswordValid(input) {
if (hasUpperCase(input) && hasLowercase(input) && isLongEnough(input) &&  hasSpecialCharacter(input)) {
console.log("The password is valid.");
}

if (!hasUpperCase(input)) {
console.log("Incorrect password. Please put a uppercase letter.");
}

if (!hasLowercase(input)) {
console.log("Incorrect password. Please put a lowercase letter.");
}

if (!isLongEnough(input)) {
console.log("Incorrect password. Please increase the length of your password to 8 characters.");
}

if (!hasSpecialCharacter(input)) {
console.log("Incorrect password. Please put a special character.");
}
}

function hasUpperCase(input) {
for (var i = 0; i < input.length; i++) {
if (input[i] === input[i].toUpperCase()) {
  return true;
}
}
}

function hasLowercase(input) {
for (var i = 0; i < input.length; i++) {
if (input[i] === input[i].toLowerCase()) {
  return true;
}
}
}

function isLongEnough(input) {
if (input.length >= 8) {
return true;
}
}

function hasSpecialCharacter(input) {
for (var i = 0; i < input.length; i++) {
for (var j = 0; j < specialCharacters.length; j++) {
  if (input[i] === specialCharacters[j]) {
    return true;
  }
}
}
}

isPasswordValid("");

3 个答案:

答案 0 :(得分:0)

您的输入是一个字符串。如果你对它使用toUpperCase()方法,它将忽略数字,只需将小写字母/字符转换为大写字母。

答案 1 :(得分:0)

“没有大写错误消息”因为您没有检查大写字母,所以您只是测试字符串相等性。

"1" == "1".toUpperCase()

toUpperCase()不会删除数字或其他非字母字符。

如果您想测试大写字母,请实际测试大写字母。

您可以使用regular expression test执行此操作:

if( !(/[A-Z]/).test(input[i]) ){
    //No uppercase letters found
}

[A-Z]告诉表达式在提供的字符集中查找字符(在本例中为大写字母A到资本Z)

答案 2 :(得分:0)

尝试为if语句添加更多if if参数,如this()

&#13;
&#13;
function hasUpperCase(input) {
  for (var i = 0; i < input.length; i++) {
    if (input[i] === input[i].toUpperCase() && isNaN(parseInt(input[i]))) {
      return true;
    }
  }
}
&#13;
&#13;
&#13;