我知道使用服务器端验证来确保安全性是好的,除了这只是为了让我了解验证。
到目前为止,我的努力相当于以下
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语句中添加什么来检查密码字符?
提前致谢,
詹姆斯
答案 0 :(得分: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);
℃。要检查密码规则,您应该只依赖已经存在的正则表达式(并删除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示例,使用Regex验证电子邮件和密码:http://jsfiddle.net/4hH3T/2/
答案 1 :(得分:0)
您可以使用正则表达式进行验证。
var reg=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/;
var isValid=reg.test(inputemail);