我正在尝试验证用户输入的密码。它只能是字母和数字,我必须使用匹配方法......即使它不是最好的方法......我必须使用match()。我错过了一些能够正常工作的东西。没有数字或特殊字符只有字母。我对javascript了解不多。
<script type="text/JavaScript">
function chkPwd() {
var pwd = document.form1.pwd;
var pwdMsg = document.getElementById('pwdMsg');
regex = /[^a-zA-Z]/;
var pwd1 = pwd.value;
if(!pwd1.match(regex)) {
pwdMsg.innerHTML = "Must contain letters only!"
pwd.select();
return;
}else{
pwdMsg.innerHTML = "";
}
}
</script>
</head>
<body>
<form name="form1" action="" method="post">
<p> Password: <br>
<input type="text" name="pwd" onchange="chkPwd()" />
<span id="pwdMsg"></span></p>
<p>
<input type="button" value="chkPass" onclick="chkPwd()">
</p>
</form>
<div id="results"></div>
</body>
</html>
答案 0 :(得分:1)
您的问题似乎出现在此部分代码中。
regex = /[^a-zA-Z]/;
var pwd1 = pwd.value;
if(!pwd1.value.match(regx)) {
您将pwd1
设置为pwd.value
,但接下来一行,您正在访问pwd1.value
。这意味着您正在高效地执行pwd.value.value
。此外,您正在使用regx
,您应该使用regex
。此外,您的if条件似乎不需要!
。我认为你的意思是这样做。
regex = /[^a-zA-Z]/;
var pwd1 = pwd.value;
if(pwd1.match(regex)) {
答案 1 :(得分:0)
如果你只想要字母,你应该使用这个正则表达式:
^[A-Za-z]+$
如果您想要字母和数字,请使用:
^[A-Za-z0-9]+$
顺便说一句,正如大家指出你使用regx
代替regex