开发者问题收集

密码正则表达式验证?

2013-05-30
1413

我有 2 个密码字段,分别称为密码和确认密码。我设法验证它以确保密码必须匹配。但是,我不知道如何向密码字段添加正则表达式以允许它长度为 6 个字符,至少包含一个大写字母和一个数字。

这是我目前获得的 javascript

<script type="text/javascript" language="javascript">

function validatepw() {
  if ( document.register.user_password.value != document.register.user_password_confirm.value)
    {
    alert('Passwords did not match!');
        return false;
        }else{
        document.register.submit();
        return true;
    }
    }
</script>

这是我的表单

<form name="register" action="signup.php" onsubmit="return validate_reg()" 
enctype="multipart/form-data" method="post" >

<table width="600" border="0">
<tr><td width="210" height="45">Username*:</td><td>
<input type="text" size="40" name="userUsername" id="user_username" /></td></tr>
<tr><td width="210" height="45">Password*:</td><td>
<input type="password" size="40" name="userPassword" id="user_password"/></td></tr> 
    <tr><td width="210" height="45">Re-type Password:</td><td>
<input type="password" size="40" name="userPasswordConfirm" 
id="user_password_confirm" onchange="javascript:validatepw()"/></td></tr>
</table>
<center><input type="submit" class="button" name="submit" value="register"></center>    
</form>

有人可以演示如何将 6 个字符、一个大写字母和一个数字的正则表达式应用于密码字段吗?我搜索了很多,找不到任何与我已经得到的内容兼容的东西。

2个回答

没有必要尝试将所有这些内容压缩到一个正则表达式中。

password.match(/[A-Z]/) && password.match(/[0-9]/) && (password.length >= 6)
Quentin
2013-05-30

如果您愿意,您当然可以使用单个正则表达式来实现这一点:

var isValid = /(?=.*\d)(?=.*[A-Z]).{6,}/.test(password)

(向前查找至少一个数字,向前查找至少一个字母,然后匹配任何内容,6 次或更多次)

Scott Weaver
2013-05-30