密码的javascript正则表达式

密码的javascript正则表达式,javascript,Javascript,我必须使用以下条件为java脚本中的密码创建正则表达式 1.密码应至少包含一个大写或小写字母 2.它应该至少包含一个数字 3.它应至少包含一个特殊字符(`、~、!、@、#、$、%、^、&、*、、+、=)使用以下正则表达式: [a-zA-Z]至少一个字母 [0-9]至少一位 ['~!@$%&*.+=^]至少用于您提到的一个特殊字符或 [^a-zA-Z0-9]用于至少一个既不是字母也不是数字的字符 但更好的做法是支持使用OpenID、SSL客户端证书进行单点登录,或者让浏览器在其密码存储中存储一

我必须使用以下条件为java脚本中的密码创建正则表达式 1.密码应至少包含一个大写或小写字母 2.它应该至少包含一个数字 3.它应至少包含一个特殊字符(`、~、!、@、#、$、%、^、&、*、、+、=)

使用以下正则表达式:

  • [a-zA-Z]
    至少一个字母
  • [0-9]
    至少一位
  • ['~!@$%&*.+=^]
    至少用于您提到的一个特殊字符
  • [^a-zA-Z0-9]
    用于至少一个既不是字母也不是数字的字符

但更好的做法是支持使用OpenID、SSL客户端证书进行单点登录,或者让浏览器在其密码存储中存储一个长密码,而不向用户显示(可能是一些由javascript预先填充并用CSS隐藏的密码输入)。

不需要强密码。他们是傻瓜的金子。是的,在其他条件相同的情况下,强密码比弱密码好。但所有其他事情很少是平等的。强密码比弱密码更有可能出现在贴在用户显示器上的便条上


更好的防守是一个很好的封锁政策。如果一个系统只允许使用包含字典单词的密码,但在三次登录尝试失败后将IP地址锁定一小时,那么经过一年的持续暴力攻击,该系统的安全性仍将超过99%。此外,您还可以通过增加持续失败尝试的锁定时间来增强它。

这些帖子很有帮助。这里是一些您可能希望在某个时候使用的代码。这将强制用户输入大写、小写、特殊字符,长度至少为8个字符。它也会打破它,让他们知道他们到底做错了什么

    <script type="text/javascript" language="javascript">
    function validate() {

        if (document.aspnetForm.PasswordValue.value == '') {
            alert('Current Password is a required field!');
            document.aspnetForm.PasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value == '') {
            alert('New Password is a required field!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/\d/) == null) {
            alert('Your new password must have a number!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/[a-z]/) == null) {
            alert('Your new password must have an Upper and lower case letter!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/[A-Z]/) == null) {
            alert('Your new password must have an Upper and lower case letter!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/['~!@#$%&*_+=]/) == null) {
            alert('Your new password must have a special character i.e.(!@#$%&*)');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.length < 8) {
            alert('Your new password must have a minimum of 8 characters!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewConfirmPassword.value == '') {
            alert('Confirm New Password is a required field!');
            document.aspnetForm.NewConfirmPassword.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value != document.aspnetForm.NewConfirmPassword.value) 
        {
            alert('New password and Confirm New Password do not match!');
            document.aspnetForm.NewConfirmPassword.focus()
            return false;
        }
        if (document.aspnetForm.PasswordValue.value == document.aspnetForm.NewPasswordValue.value) {
            alert('Your current password and new password are the same!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
    }
</script>

函数验证(){
if(document.aspnetForm.PasswordValue.value=''){
警报(“当前密码是必填字段!”);
document.aspnetForm.PasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value=''){
警报(“新密码是必填字段!”);
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value.match(/\d/)==null){
警报('您的新密码必须有一个数字!');
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value.match(/[a-z]/)==null){
警报('您的新密码必须有大写和小写字母!');
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value.match(/[A-Z]/)==null){
警报('您的新密码必须有大写和小写字母!');
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value.match(/['~!@$%&*.+=]/)==null){
警报('您的新密码必须具有特殊字符,即(!@$%&*));
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value.length<8){
警报('您的新密码必须至少包含8个字符!');
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
如果(document.aspnetForm.NewConfirmPassword.value=''){
警报(“确认新密码是必填字段!”);
document.aspnetForm.NewConfirmPassword.focus()
返回false;
}
if(document.aspnetForm.NewPasswordValue.value!=document.aspnetForm.NewConfirmPassword.value)
{
警报('新密码和确认新密码不匹配!');
document.aspnetForm.NewConfirmPassword.focus()
返回false;
}
if(document.aspnetForm.PasswordValue.value==document.aspnetForm.NewPasswordValue.value){
警报('您的当前密码和新密码相同!');
document.aspnetForm.NewPasswordValue.focus()
返回false;
}
}

不是答案,但我的意见是不要强迫用户这么做。所有这一切的原因是用户必须想到他们记不住的密码,并且必须写下来。这是一篇关于这个主题的有趣的微软研究论文。有一件事我没有看到你测试过,那就是像空格这样的无效字符,你可能不想要。因此,如果您设置了对用户的限制,那么这可能也是您想要禁止的。感谢您的回复,我使用正则表达式验证器正确地得到了它。我在自定义表达式“^.*(=.{6,25})(?=..*\d)(?=..[a-zA-Z])(?=.[~`.@.$%^&;*+=]).$”上添加了以下内容,但当我在javascript中使用相同的内容时,它不起作用。如何限制用户在上述给定表达式中只输入6到25个字符谢谢您宝贵的答复其工作良好如何让用户输入至少6个字符,最多25个字符“if(!(userpw.length>=6&&userpw.lengthof with regex:”if(!userpw.match(/.{6,25}/)invalid=true;“是的,第二个很好。谢谢你的回复。工作正常。再次感谢
    <script type="text/javascript" language="javascript">
    function validate() {

        if (document.aspnetForm.PasswordValue.value == '') {
            alert('Current Password is a required field!');
            document.aspnetForm.PasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value == '') {
            alert('New Password is a required field!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/\d/) == null) {
            alert('Your new password must have a number!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/[a-z]/) == null) {
            alert('Your new password must have an Upper and lower case letter!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/[A-Z]/) == null) {
            alert('Your new password must have an Upper and lower case letter!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.match(/['~!@#$%&*_+=]/) == null) {
            alert('Your new password must have a special character i.e.(!@#$%&*)');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value.length < 8) {
            alert('Your new password must have a minimum of 8 characters!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
        if (document.aspnetForm.NewConfirmPassword.value == '') {
            alert('Confirm New Password is a required field!');
            document.aspnetForm.NewConfirmPassword.focus()
            return false;
        }
        if (document.aspnetForm.NewPasswordValue.value != document.aspnetForm.NewConfirmPassword.value) 
        {
            alert('New password and Confirm New Password do not match!');
            document.aspnetForm.NewConfirmPassword.focus()
            return false;
        }
        if (document.aspnetForm.PasswordValue.value == document.aspnetForm.NewPasswordValue.value) {
            alert('Your current password and new password are the same!');
            document.aspnetForm.NewPasswordValue.focus()
            return false;
        }
    }
</script>