Installshield javascript 中的 passsword 验证和警报消息



谁能告诉我如何在安装盾支持的javascript中打印消息而不是警报?我尝试使用以下代码,但警报不起作用。另一个问题是我无法使用正则表达式验证密码。

    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;
    }

正如@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 修饰符以防止错误的结果。

可能是因为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 标志。

这个答案很好地解释了使用正则表达式进行密码限制验证:

假设我们希望我们的密码:

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

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

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

最新更新