使用空格字符进行 JavaScript 密码验证

标签 javascript jquery

我需要使用 JavaScript 在以下条件下进行密码验证。我的条件:

  1. 至少 0-9 中的一位数字
  2. 至少一个小写字符
  3. 至少一个大写字符
  4. 必须包含至少一个特殊字符
  5. 长度至少 8 个字符,最多 20 个字符
  6. 注意:空格键也被视为特殊字符。

我试过了

(?=^.{6,10}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;'?/>.<,' '])(?!.*\s).*$

但是这不起作用。还有其他想法吗?

最佳答案

基本解决方案

处理一组验证规则的最佳方法(在我看来)是为每个规则定义一个正则表达式,然后迭代这些规则并检查它们是否成功。如果任何规则失败,则整个验证失败。

类似这样的事情:

var rules = [
    /[0-9]/,//at least one digit from 0-9, could also use \d
    /[a-z]/,//at least one lowercase
    /[A-Z]/,//at least one uppercase
    /[!%&*\s]/,//special characters, add more as needed. note that \s checks for whitespace
    /^.{8,20}$///length between 8-20
];

var input = "Something1!";

//validate
var pass = true;
for(var i = 0; i < rules.length; i++){
   var rule = rules[i];
   if(!rule.test(input)){
      pass = false;
      break;
   }
}

Here is a working example

<小时/>

高级解决方案

您可以进一步扩展此解决方案,以允许将专用错误消息与每个规则关联。您将拥有一个对象数组,而不是一个正则表达式数组 - 每个对象都包含正则表达式规则和错误消息。

例如:

var rules = [{
    exp: /[0-9]/,
    msg: 'must contain at least one digit'
}, {
    exp: /[a-z]/,
    msg: 'must contain at least one lowercase'
}, {
    exp: /[A-Z]/,
    msg: 'must contain at least one uppercase'
}, {
    exp: /[!%&*\s]/,
    msg: 'must contain at least one special move'
}, {
    exp: /^.{8,20}$/,
    msg: 'must be 8-20 characters long'
}];

var input = "Something1!";

var pass = true;
for (var i = 0; i < rules.length; i++) {
    var rule = rules[i];
    if (!rule.exp.test(input)) {
        pass = false;
        alert("Error: " + rule.msg);//alert the error message
        break;
    }
}

And here it is in action

关于使用空格字符进行 JavaScript 密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21404330/

相关文章:

javascript - 关于如何将 pos 系统上的交易数据插入数据库的想法?

javascript - JQuery 查找带有数据对象的元素

javascript - jQuery 添加/删除类或切换类

jquery - 将 div 集中在其父 div 的剩余水平空间中

javascript - .click 将一段 json 添加到面板中

javascript - 不同文件中的Requirejs配置

javascript - 选择一个元素并向其添加 CSS 规则

javascript - 为什么当我删除搜索字段中的输入太快时,结果不会消失? (Javascript)

javascript - 优化 jquery 的建议

javascript - 在 mouseLeave 上关闭 jQuery 菜单