密码-大写字符JavaScript

Password - uppercase characters JavaScript

本文关键字:字符 JavaScript 密码      更新时间:2023-09-26

如果这是一个愚蠢的问题请原谅。我在大学里学网页设计,完全被卡住了。我必须使用Javascript验证密码,以确保它有大写字母、小写字母、数字字符和至少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;
}

你的代码有几个错误

  • 比较应该是<0而不是<1(当没有找到regexp时,search返回负值)
  • /i in regexp(不区分大小写-当试图找出大写/小写字符时不合适)
  • 搜索函数调用错误(使用[]代替())
  • 在regexp中[]缺失([]在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. String.search()返回-1。如果在0th(第一个)字符处找到字符串,检查< 1仍然会错误地返回true
  2. String.search()是一个函数,需要用括号( )包围参数,而不是括号[ ]
  3. 你不想在你的正则表达式中执行不区分大小写的搜索,所以删除/i选项。
  4. 尝试跟踪另一个变量中是否存在错误。然后,如果任何一种情况产生错误,可以返回false

试试这个:

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;
}

注意"search"是一个函数,所以你必须像y.search()那样调用它,而不是用[]括号(用于访问成员)。Y "search"也有同样的效果,但是search[]不行,因为它不是数组

尝试这样修改代码:

  • 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;
}

主要问题是您正在使用'i'修饰符,它告诉regexp不区分大小写,请尝试不使用此修饰符。

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

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;

你可以试试:

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;
}