Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installshield javascript中的密码验证和警报消息_Javascript_Regex_Validation_Passwords_Installshield - Fatal编程技术网

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

Installshield javascript中的密码验证和警报消息,javascript,regex,validation,passwords,installshield,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");

有人能告诉我如何用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;
    }

这可能是因为
var patt=newregexp(“:\\[A-Za-z0-9]{6,20}$\\”,“ig”)引发异常,因为该异常是非法的regexp

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

var patt = /^[A-Za-z0-9]{6,20}$/;
由于您定义了范围A-Z和A-Z,因此不需要i标志,也不需要g标志。

很好地解释了使用regex进行密码限制验证:

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

  • 包含8到15个字符
  • 必须包含大写字母
  • 必须包含小写字母
  • 必须包含一个数字
  • 必须包含一个特殊符号
然后我们可以编写如下正则表达式:

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

正如@some所建议的,您应该首先只检查正则表达式是否有效

但是阅读错误消息“密码应该有6到20个字符,其中包含字母表和0到9之间的数字”,我认为regex
[A-Za-z0-9]{6,20}$
的这一部分并不像您想象的那样

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

例如:

var patt=newregexp('[a-z0-9]{6,20}$',“i”);
var密码=[
“AAAAA”,
"333333",
“a12b3c”,
“AAAAA”,
"$$$$$444444"
];
对于(变量i=0;i}
您所说的“我无法验证”是什么意思?使用“^”而不是“:\”。看一看。我用“^[a-Za-z0-9]{6,20}$”试过,但不起作用。看,我像你提到的那样试过,但不起作用。还有其他建议吗?是否存在警报?调试:删除函数中除警报调用以外的所有内容。若那个不起作用,那个么问题就出在别处。是的,我也尝试过不使用警报。它不起作用。你们的代码中只使用了警报吗<代码>函数Passwordvalidation(){alert('this work?')}
是的,我尝试过使用/不使用alert。这两种情况都不适用于此代码。这不是问题。感谢您提供的信息,但实际上我问的是,我的regexp在installshield javascript中不起作用。那么你能提出其他建议吗?是的[A-Za-z0-9]{6,20}按照要求运行良好。我在警报消息中弄错了。那么还有其他建议吗?regexp是错误的。这是问题之一。它应该是
/^[A-Za-z0-9]{6,20}$/
OP评论说“我试过了”^[A-Za-z0-9]{6,20}$”,但没有成功。”。不清楚它到底是如何尝试的。/^[A-Za-z0-9]{6,20}$/-也尝试了这个正则表达式。@fourthbird函数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”;返回true;}