有人能告诉我如何在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;
}
答案 0 :(得分:1)
正如@some建议的那样,首先应该检查正则表达式是否有效。
但是阅读错误消息“密码应该包含6到20个字符,其中包含0到9之间的字母和数字”,我认为这部分正则表达式[A-Za-z0-9]{6,20}$
不能做你认为它做了什么。
这匹配在字符串末尾重复6到20次的任何大写或小写字符或数字。
这也符合$$$$$444444
或aaaaaa
例如:
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