【问题标题】:passsword validation and alert message in Installshield javascriptInstallshield javascript中的密码验证和警报消息
【发布时间】:2018-06-22 14:17:15
【问题描述】:

谁能告诉我如何在 installshield 支持的 javascript 中打印消息而不是警报? 我尝试使用以下代码,但警报不起作用。 另一个问题是我无法使用 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;
    }

【问题讨论】:

  • “我无法验证”是什么意思?使用“^”而不是“:\\”。看看here
  • 我尝试使用 "^[A-Za-z0-9]{6,20}$" 但没有成功。

标签: javascript regex validation passwords installshield


【解决方案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

【讨论】:

  • 是的 [A-Za-z0-9]{6,20} 符合要求。我在警报消息中出错了。还有其他建议吗?
  • 正则表达式错误。这是问题之一。应该是/^[A-Za-z0-9]{6,20}$/
  • OP 评论说“我尝试使用“^[A-Za-z0-9]{6,20}$”,但没有成功。”。目前尚不清楚它是如何尝试的。
  • /^[A-Za-z0-9]{6,20}$/ - 也尝试过这个正则表达式。
  • @Thefourthbird 函数 PasswordValidation() { var Passwordportal = Session.Property("PASSWORDPORTAL"); var patt = /^[A-Za-z0-9]{6,20}$/; var passvalid = patt.test(Passwordportal); if (passvalid) { GetMd5(); Session.Property("PASSVALIDFLAG") = "0";返回真; }
【解决方案2】:

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

假设我们想要我们的密码:

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

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

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

【讨论】:

  • 这不是问题。
  • 感谢您提供的信息,但我实际上要问的是我的正则表达式在 installshield javascript 中不起作用。那么你能为此提出其他建议吗?
【解决方案3】:

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

【讨论】:

  • 我按照你说的试过了,但是没有用。还有其他建议吗?
  • alert 存在吗?调试:删除函数中的所有内容,但 alert 调用。如果这不起作用,那么问题就出在其他地方。
  • 是的,我也尝试过没有警报。它不起作用。
  • 您尝试过只在代码中使用警报吗? function Passwordvalidation(){alert('Does this work?')}
  • 是的,我试过带/不带警报。这两种情况都不适用于此代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多