在下面的代码中,第一个和最后一个正则表达式总是将“enter again”作为输出,而第二个正则表示“welcome”作为输出。
错误在哪里?我正在传递值
code:<form action="homepage.php" name="myForm" method="post">
<input type="submit" name="s" value="GO" onclick="return validateForm()">
我想在验证后重定向到homepage.php。
<script type="text/javascript">
function validateForm() {
var x = document.forms["myForm"]["user"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
alert("Not a valid e-mail address");
return false;
}
var y = document.forms["myForm"].elements["pass"].value;
//var passw=/^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$/;
var passw = /^((?=.*[a-zA-Z])(?=.*\d)(?=.*[#@%$]).{5,10})$/;
alert(x);
alert(y);
//var passw=/^[A-Za-z0-9]\w{5,10}$/;
if (y.match(passw)) {
alert('Welcome')
return true;
} else {
alert('enter again')
return true;
exit();
}
}
</script>
答案 0 :(得分:0)
对我来说,你在网上发现了第一个正则表达式然后进行了修改吗?最初的正则表达式是:
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{5,10}$
哪个应该正常工作。
至于为什么你的尝试不起作用:
/^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$/
据我所知,唯一的问题是它不会限制长度,也不会检查是否有大写字母和小写字母([a-zA-Z]
匹配任何大小写字符)。
/^((?=.*[a-zA-Z])(?=.*\d)(?=.*[#@%$]).{5,10})$/
我能看到的唯一错误是它没有强制执行每个案例的字符。如上所述,它只需要一个字母的任何一个字母。
/^[A-Za-z0-9]\w{5,10}$/
这个人说找到[A-Za-z0-9]
的单个字符,然后找到5-10个字符(除了包括_ ie [A-Za-z0-9_]
之外是相同的)。所以这将匹配任何6-11字符没有符号的字符串,但它不强制每个上,下和数字1。它可以是0000000
,aaaaaaaa
,AAAAAAAA
甚至是a______
。