【问题标题】:Password strength regex with numbers [duplicate]带数字的密码强度正则表达式[重复]
【发布时间】:2016-11-27 11:07:58
【问题描述】:

我正在做强度密码测试,我正在尝试检查密码是否有大小写字符。我正在使用两个正则表达式,它们几乎可以工作;代码就在这里:

    var upper = false;
    var lower = false;
    var upperCase= new RegExp('[^A-Z]');
    var lowerCase= new RegExp('[^a-z]');
    


    if (password.match(upperCase )){
        upper = true;    
    }
    if (password.match(lowerCase)){
        lower = true;
    }

当我输入数字或只是一个数字(如“1”)时,upper 和 lower 变为 true。

我不太擅长正则表达式,是不是我弄错了?

【问题讨论】:

  • [^...] 是一个倒排字符类。它匹配集合中的任何字符not

标签: javascript regex


【解决方案1】:

看看下面的例子,它使用 test 返回一个布尔值,判断密码是否包含大写和小写。您将看到它如何针对各种密码测试这两个正则表达式。

    var upperCase= new RegExp('[A-Z]');
    var lowerCase= new RegExp('[a-z]');
    

function test(password) {
    return [ upperCase.test(password), lowerCase.test(password)];
  }

console.log(test("Abc"));
console.log(test("abc"));
console.log(test("123"));

【讨论】:

    【解决方案2】:

    除非您按每行代码获得报酬;你可以简单地写:

    var upper = password.match(/[A-Z]/);
    var lower = password.match(/[a-z]/);
    

    这也修复了代码中使用 [^] 否定匹配的错误(又名;您的 upperCase 正则表达式匹配非大写字符)

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2014-12-20
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2016-12-17
      相关资源
      最近更新 更多