Installshield javascript中的密码验证和警报消息

时间:2018-01-13 07:18:04

标签: javascript regex validation passwords installshield

有人能告诉我如何在installshield支持的javascript而不是alert中打印消息吗? 我尝试使用以下代码,但警报是“正常工作”。 另一个问题是我无法使用RegExp验证密码。

    function Passwordvalidation()
    {
        var password= Session.Property("PASSWORD");
        var patt = new RegExp(":\\[A-Za-z0-9]{6,20}$\\","ig");
        var validpassword = patt.test(password);
        if(validpassword)
            {
                GetMD5(); //calls another function
                return true;
            }
        alert("password should have 6 to 20 characters which contains alphabets and digits between 0 to 9");
        return false;
    }

3 个答案:

答案 0 :(得分:1)

正如@some建议的那样,首先应该检查正则表达式是否有效。

但是阅读错误消息“密码应该包含6到20个字符,其中包含0到9之间的字母和数字”,我认为这部分正则表达式[A-Za-z0-9]{6,20}$不能做你认为它做了什么。

这匹配在字符串末尾重复6到20次的任何大写或小写字符或数字。 这也符合$$$$$444444aaaaaa

例如:

var patt = new RegExp('[a-z0-9]{6,20}$', "i");
var passwords = [
  "aaaaaa",
  "333333",
  "a12b3c",
  "AAAAAA",
  "$$$$$444444"
];

for (var i = 0; i < passwords.length; i++) {
  console.log(passwords[i] + " : " + patt.test(passwords[i]));
}

使用^

var patt = new RegExp('^[a-z0-9]{6,20}$', "i");
var passwords = [
  "aaaaaa",
  "333333",
  "a12b3c",
  "AAAAAA",
  "$$$$$444444"
];

for (var i = 0; i < passwords.length; i++) {
  console.log(passwords[i] + " : " + patt.test(passwords[i]));
}

修饰符i使其不区分大小写,因此您可以将正则表达式更新为[a-z0-9]{6,20}$[A-Z0-9]{6,20}$ 您也可以将g修饰符省略为prevent wrong results

答案 1 :(得分:0)

可能是因为var patt = new RegExp(":\\[A-Za-z0-9]{6,20}$\\","ig");抛出异常,因为这是一个非法的正则表达式。

您不需要使用new RegExp,但可以将其定义为文字正则表达式:

var patt = /^[A-Za-z0-9]{6,20}$/;

由于您定义了范围A-Z和a-z,因此您不需要i标志,并且您也不需要g标志。

答案 2 :(得分:0)

This answer非常好地解释了使用正则表达式进行密码限制验证:

  

让我们说我们想要密码:

     
      
  • 包含8到15个字符
  •   
  • 必须包含大写字母
  •   
  • 必须包含小写字母
  •   
  • 必须包含数字
  •   
  • 必须包含特殊符号之一
  •   
     

然后我们可以写一个这样的正则表达式:

^(?=.{8,15}$)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*]).*$
 \__________/\_________/\_________/\_________/\______________/
    length      upper      lower      digit        symbol