as3正则表达式来验证密码

时间:2013-12-03 17:27:01

标签: regex actionscript-3

我有一个要求输入密码的表单,我想验证密码是否至少包含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));
            } 
     }

但它不起作用。我做错了什么?

任何帮助都会非常感激!

2 个答案:

答案 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);
        }