0

我知道使用服务器端验证来确保安全性很好,但这只是为了让我了解验证。

到目前为止,我的努力如下

function validateUser()
{
    var x=document.forms["myForm"]["email"].value;
    var y=document.forms["myForm"]["password"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    var uppercase = password.match(/[A-Z]/)
    var lowercase = password.match(/[a-z]/g)
    var number = password.match(/[0-9]/g)
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
    alert("Not a valid e-mail address or password");
    return false;
    }else{ 
    alert("Valid Email Address and Password");
    return true;

    }
    }

基本上,当密码没有至少 1 个小写字母、大写字母和数字时,我需要弹出一个警报框。到目前为止,我的代码只是在电子邮件格式错误时引发错误。我在 if 语句中添加什么来检查密码字符?

提前致谢,

詹姆士

4

2 回答 2

2

我们在您当前的实施中遇到的几个问题:

一种。您可能遇到的错误是密码未定义。

现在你正在做:

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

但是您在下面将其称为“密码”:

var uppercase = password.match(/[A-Z]/)
var lowercase = password.match(/[a-z]/g)

将 var y 更改为:

var password=document.forms["myForm"]["password"].value;

湾。要验证电子邮件,您应该使用正则表达式,例如:

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

var isValidEmail = re.test(email);

C。要检查密码规则,您应该只依赖您已经使用的正则表达式(并去掉 atpos、dotpos 的使用——这使得它比它需要的复杂得多)。

例子:

var email='me@mailinator.com';
var password='test-P1assword';
var hasUpper = password.match(/[A-Z]/)
var hasLower = password.match(/[a-z]/g)
var hasNumber = password.match(/[0-9]/g)

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

var isValidEmail = re.test(email);

if (isValidEmail && hasUpper && hasLower && hasNumber) {
    alert("Valid Email Address and Password");
    return true;
} else { 
    alert("Not a valid e-mail address or password");
    return false;
}

JSFiddle 示例,使用正则表达式完成验证电子邮件和密码:http: //jsfiddle.net/4hH3T/2/

正则表达式取自:Validate email address in JavaScript?

于 2013-05-03T01:41:46.643 回答
0

您可以使用正则表达式进行验证。

 var reg=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/;
 var isValid=reg.test(inputemail);
于 2013-05-03T01:37:49.607 回答