我有一个要求输入密码的表单,我想验证密码是否至少包含8个字符,而这八个字符中至少有两个必须是数字,两个必须是任何顺序的字母。我正在尝试这个:
function validatePassword():void
{
var passVal:String = pass.text;
if(validPass(passVal))
{
trace("Password Ok");
sendForm();
}
else
{
trace("You have entered an invalid password");
}
function validPass(passVal:String):Boolean{
var pw:RegExp = /^?=.{8,}[A-Za-z]{2,}[0-9]{2,}/;
return(pw.test(passVal));
}
}
但它不起作用。我做错了什么?
任何帮助都会非常感激!
答案 0 :(得分:2)
使用此模式^(?=.{8})(?=(.*\d){2})(?=(.*[A-Za-z]){2}).*$
^
锚(?=.{8})
展望至少8个字符(?=(.*\d){2})
以任意顺序向前看至少2位数(?=(.*[A-Za-z]){2})
以任意顺序查看至少2个字母.*$
抓住所有内容答案 1 :(得分:1)
问题是你的正则表达式强制数字跟随字母([A-Za-z]{2,}[0-9]{2,}
)。虽然可以编写这样的正则表达式,但我建议使用简单的长度检查和两个正则表达式:
function validPass(passVal:String):Boolean{
if (passVal.length < 8)
return False;
var letterRegex:RegExp = /^.*?[A-Za-z].*?[A-Za-z].*?$/;
var numberRegex:RegExp = /^.*?\d.*?\d.*?$/;
return letterRegex.test(passVal) && numberRegex.test(passVal);
}