密码 - 大写字符JavaScript

时间:2013-05-04 17:39:29

标签: javascript

请原谅这是一个愚蠢的问题。我正在大学做一个网页设计主题,我完全陷入困境。我必须使用Javascript验证密码,以确保它具有uppsercase,小写,数字字符和至少4个字符。

这是我的代码,它给我警报说我没有包括角色,但当我包含它们时我仍然得到警报。任何帮助表示赞赏。

var y = document.forms["loginDetails"]["password"].value;
if (y.length < 4) {
    alert("Your password needs a minimum of four characters")
}
if (y.search[/a-z/i] < 1) {
    alert("Your password needs a lower case letter")
}
if (y.search[/A-Z/i] < 1) {
    alert("Your password needs an uppser case letter")
}
if (y.search[/0-9/] < 1) {
    alert("Your password needs a number")
    return false;
}

6 个答案:

答案 0 :(得分:2)

您的代码有多处错误

  • 比较应为<0而非<1search在找不到正则表达式时返回负值)
  • regexp中的
  • /i(不区分大小写 - 在尝试计算大写/小写字符时不合适)
  • 调用搜索功能错误(使用[]代替()
  • regexp []中的
  • 缺失(正则表达式中的[]表示来自给定范围的一个字符,因此[a-z]将匹配每个小写字符,而a-z将匹配字符串'a -z')

应该看起来像:

if (y.length < 4) {
  alert("Your password needs a minimum of four characters")
} else if (y.search(/[a-z]/) < 0) {
  alert("Your password needs a lower case letter")
} else if(y.search(/[A-Z]/) < 0) {
  alert("Your password needs an uppser case letter")
} else  if (y.search(/[0-9]/) < 0) {
  alert("Your password needs a number")
} else {
    // Pass is OK
}

答案 1 :(得分:2)

您的代码存在一些问题:

    如果找不到正则表达式,
  1. String.search()会返回-1。如果在< 1(第一个)字符处找到字符串,则对true进行检查仍会错误地返回0th
  2. String.search()是一个函数,需要使用围绕参数的括号( )来调用,而不是括号[ ]
  3. 您不希望在正则表达式中执行不区分大小写的搜索,因此请删除/i选项。
  4. 尝试跟踪另一个变量是否存在错误。然后,如果任何一个案例产生错误,您可以返回false
  5. 试试这个:

    var error = false;
    var message = '';
    if (y.length < 4) {
      message += "Your password needs a minimum of four characters. ";
      error = true;
    }
    if (y.search(/[a-z]/) == -1) {
      message += "Your password needs at least one lower case letter. ";
      error = true;
    }
    if (y.search(/[A-Z]/) == -1) {
      message += "Your password needs at least one upper case letter. ";
      error = true;
    }
    if (y.search (/[0-9]/) == -1) {
      message += "Your password needs a number.";
      error = true;
    }
    if (error) {
      alert(message);
      return false;
    }
    

答案 2 :(得分:1)

请注意,“搜索”是函数,因此您必须像y.search()一样调用它,而不是使用[]括号(用于访问成员。)“搜索”会有相同的效果,但搜索[]不正常,因为它不是一个数组

答案 3 :(得分:1)

尝试通过以下方式更改代码:

  • 在每个失败声明中添加return false;
  • 更改search()函数语法。
  • 您不需要使用/i,因为它不会检查案例。

<强>代码

var y = document.forms["loginDetails"]["password"].value;
if (y.length < 4) {
    alert("Your password needs a minimum of four characters")
    return false;
}
if (y.search(/[a-z]/) < 1) {
    alert("Your password needs a lower case letter")
    return false;
}
if (y.search(/[A-Z]/) < 1) {
    alert("Your password needs an uppser case letter")
    return false;
}
if (y.search(/[0-9]/) < 1) {
    alert("Your password needs a number")
    return false;
}

答案 4 :(得分:0)

主要问题是你正在使用'i'修饰符,它告诉正则表达式不区分大小写,尝试不使用此修饰符。

为了改善用户体验,我使用了一条错误消息,因此,你可以使用这段代码:

if(/[a-z]+/.test(s) && /[A-Z]+/.test(s) && /\d+/.test(s) && s.length >= 4)
  return true;

alert("Your password needs Upper and lower case letters, numbers and a minimum four chars");
return false;

答案 5 :(得分:0)

你可以试试这个:

var y = document.forms["loginDetails"]["password"].value;

if (y.length < 4) {
    alert("Password should contain minimum four characters");
    return false;
} 

var pwd=/^(?=.*[a-z])/;
var pwd1=/^(?=.*[A-Z])/;
var pwd2=/^(?=.*[0-9])/;

if (pwd.test(y) == false) {
    alert("Password Should contain atleast One lowerCase letter");
    return false;
}

if (pwd1.test(y) == false) {
    alert("Password Should contain atleast One UpperCase letter");
    return false;
}
if (pwd2.test(y) == false) {
    alert("Password Should contain atleast One Number");
    return false;
}

或者,你也可以在一行中做同样的事情:

var pwd=/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/;
if (pwd.test(y) == false) {
    alert("Password Should contain atleast One Number, One UpperCase and a lowercase letter");   
    return false;
}