【问题标题】:Regex for password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters密码的正则表达式必须包含至少八个字符、至少一个数字以及大小写字母和特殊字符
【发布时间】:2021-09-08 23:06:21
【问题描述】:

我想要一个正则表达式来检查:

密码至少包含八个字符,其中至少包含一个数字,并且包含大小写字母和特殊字符,例如#?!

它不能是您的旧密码或包含您的用户名、"password""websitename"

这是我的验证表达式,它适用于八个字符,包括一个大写字母、一个小写字母和一个数字或特殊字符。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

密码必须是八个字符,包括一个大写字母、一个特殊字符和一个字母数字字符

【问题讨论】:

标签: javascript asp.net regex


【解决方案1】:

最少八个字符,至少一个字母和一个数字:

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

最少八个字符,至少一个字母、一个数字和一个特殊字符:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"

最少八个字符,至少一个大写字母、一个小写字母和一个数字:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

最少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"

最少 8 个字符,最多 10 个字符,至少 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"

【讨论】:

  • "^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$" 不允许使用符号作为 8 个字符之一
  • 我发现所有字符(特殊和标点符号)都允许使用以下内容,但没有强制要求:“^(?=.*[az])(?=.*[AZ])(?= .*\d)[a-zA-Z\d\w\W]{8,}$"
  • 密码必须始终具有完全相同的顺序。什么更通用的东西可以以大写或特殊字符开头。
  • 我可以说正则表达式不包含符号 '" ~`,.;: ()[]{}
  • @dcp 你可以使用这个 ^(?=.*[az])(?=.*[AZ])(?=.*\d)(?=.*[#@$ !%*?&-])[A-Za-z\d@#$!%*?&-]{8,}$ 如果你想在这里添加其他特殊字符,例如^
【解决方案2】:

您可以将此正则表达式与多个 lookahead assertions (conditions) 一起使用:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$

这个正则表达式将强制执行这些规则:

  • 至少有一个大写English letter(?=.*?[A-Z])
  • 至少一个小写英文字母(?=.*?[a-z])
  • 至少一位,(?=.*?[0-9])
  • 至少有一个特殊字符,(?=.*?[#?!@$%^&*-])
  • 至少 8 个长度 .{8,}(带有锚点)

【讨论】:

  • 这正是我需要的细分。谢谢!
  • 感谢@anubhava,如何从中删除最小 8 条件我试过 '^(?=.*?[AZ])(?=.*?[az])(?=.*? [0-9])(?=.*?[#?!@$%^&*-])$' 但没用
  • 只需使用 .+ 而不是 .{8,}
  • 我用这个是因为它可以处理空格。
  • 为什么我们需要 ^ 和 $?我测试没有 ^$ 的正则表达式工作正常。有没有例外?
【解决方案3】:

正则表达式没有 AND 运算符,因此很难编写匹配有效密码的正则表达式,当有效性由某事 AND 某事和某事定义时...

但是,正则表达式确实有 OR 运算符,所以只需应用 DeMorgan 定理,并编写一个匹配无效密码的正则表达式:

少于 8 个字符 OR 任何不带数字 OR 任何不带大写 OR 或任何不带小写 OR 没有特殊字符的任何内容。

所以:

^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$

如果有任何匹配,那么它是一个无效的密码。

【讨论】:

  • 好吧,我担心你是我们有时遇到的那些计算机科学家之一,他们没有意识到正则表达式正则表达式之间的区别. ;) 确实,如果您可以在之后否定匹配结果,许多正则表达式任务会简单得多,但这并不总是可能的。不过,这是一个漂亮的正则表达式。不简单,很优雅!
  • 为什么我之前没有想过?很好的答案(当有可能否定结果时)
  • 这个是允许空格如何检查密码不应该包含你的正则表达式的空格?我试过这个 /^(\s|.{0,7}|[^0-9]*|[^AZ]*|[^az]*|[^$#@%]*|\s)$/ .test('aAa#a1a aa');但它不工作
  • @AlanMoore 我认为正则表达式是正则表达式的缩写。有什么区别?
  • @mikekoscinski 你存储的是哈希值,而不是密码,哈希值是固定长度的,所以密码可以任意长……如果你记忆力很好的话。跨度>
【解决方案4】:

@anubhava 的回答只是一个小改进:由于特殊字符仅限于键盘中的字符,因此请将此用于任何特殊字符:

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

这个正则表达式将强制执行这些规则:

  • 至少一个大写英文字母
  • 至少一个小写英文字母
  • 至少一位数
  • 至少一个特殊字符
  • 长度至少为 8 个

【讨论】:

  • 在 JavaScript 风格中,\W 仅匹配 ASCII 字符。所以你没有改变它,现在你必须过滤掉空白字符。此外,您添加的所有括号和 {1,} 量词都是纯噪声,删除非贪婪 (?) 运算符毫无意义。这里没有改进。
  • 以及如何避免空字符串。空字符串正则表达式应该返回 true。我使用了以下正则表达式 (?=.*[0-9])(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]) (?=\\S+$)。{8,15}
  • 因 _ 特殊字符失败
  • 要考虑下划线也是一个特殊字符以及其他一些改进,例如:^(?=[^A-Z\s]*[A-Z])(?=[^a-z\s]*[a-z])(?=[^\d\s]*\d)(?=\w*[\W_])\S{8,}$
【解决方案5】:

使用以下正则表达式满足以下条件:

条件:

  1. 最少 1 个大写字母。
  2. 最少 1 个小写字母。
  3. 最少 1 个特殊字符。
  4. 最少 1 个数字。
  5. 最少 8 个字符。
  6. 最多 30 个字符。

正则表达式:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/

【讨论】:

  • 你的答案比几年前写的其他答案更好吗?
  • @JoshYates1980 您能否提及正则表达式失败的“特殊字符”。让我验证并相应地更新它。但据我所知,它适用于所有符合 1 个特殊字符的任务条件。等待您的回复....
  • @SHASHANKHONRAO 我将表达式更新为:^(?=.*[az])(?=.*[AZ])(?=.*\d)(?=.*[$ @$!%*?&+~|{}:;<>/])[A-Za-z\d$@$!%*?&+~|{}:;/]{8,15} 将包括以下非字母数字字符:(@$!%*?&+~`|{}:;
  • 只有一个我发现可以成功阻止使用表情符号
【解决方案6】:

对于我的情况,我在遵循最流行的答案时遇到了一些困难。例如,我的验证因;[ 等字符而失败。我对将我的特殊字符列入白名单不感兴趣,因此我利用[^\w\s] 作为测试——简单地说——匹配非单词字符(包括数字)和非空白字符。总而言之,这对我有用...

  • 至少8 个字符
  • 至少1 数字字符
  • 至少1小写字母
  • 至少1大写字母
  • 至少有1 特殊字符

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/

JSFiddle Link - 涵盖各种案例的简单演示

【讨论】:

  • 不错的一个。但是发现了一个问题,即您的正则表达式不接受 _(underscore) 作为特殊字符 :( .
  • 好,但有点错误。如果我们使用空格,它也接受不是有效密码的空格。
  • 我真的很喜欢这个答案,只是它不能接受下划线。我所做的只是将(?=.*?[^\w\s]) 替换为(?=.*?([^\w\s]|[_])) 以添加对下划线的支持,现在它工作得很好。 @Dinish.net 我使用的系统在我们获取密码字符串时会从密码字符串中删除空格,因此如果您想使用此答案,使用 vanilla JS String.prototype.trim() 方法会很好。
【解决方案7】:

我会回复 Peter Mortensen,但我没有足够的声誉。

他的表达方式非常适合每个指定的最低要求。他的不需要特殊字符的表达式的问题是它们也不允许特殊字符,因此它们也强制执行最大要求,我不相信 OP 要求。通常,您希望允许您的用户设置他们想要的密码强度;为什么要限制强密码?

所以,他的“最少八个字符,至少一个字母和一个数字”的表达方式:

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

达到最低要求,但其余字符只能为字母和数字。要允许(但不要求)特殊字符,您应该使用以下内容:

^(?=.*[A-Za-z])(?=.*\d).{8,}$ 允许任何字符

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$ 允许特定的特殊字符

同样,“最少八个字符,至少一个大写字母,一个小写字母和一个数字:”

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

满足最低要求,但允许使用字母和数字。使用:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ 允许任何字符

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,} 允许使用特定的特殊字符。

【讨论】:

  • 感谢您的解释。
  • 这应该被标记为正确答案。最佳答案是错误的。
  • 赞成。我遇到了同样的问题:最佳答案限制用户使密码尽可能强。
【解决方案8】:

一个更“通用”的版本(?),允许没有英文字母作为特殊字符

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$

var pwdList = [
    '@@V4-\3Z`zTzM{>k',
    '12qw!"QW12',
    '123qweASD!"#',
    '1qA!"#$%&',
    'Günther32',
    '123456789',
    'qweASD123',
    'qweqQWEQWEqw',
    '12qwAS!'
  ],
  re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;
  
  pwdList.forEach(function (pw) {
    document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');
  });

【讨论】:

    【解决方案9】:

    导入 JavaScript 文件jquery.validate.min.js

    你可以使用这个方法:

    $.validator.addMethod("pwcheck", function (value) {
        return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
    });
    
    1. 至少一个大写英文字母
    2. 至少一个小写英文字母
    3. 至少一位数
    4. 至少一个特殊字符

    【讨论】:

      【解决方案10】:

      试试这个:

      1. 最少六个字符
      2. 至少一个大写字符
      3. 至少一个小写字符
      4. 至少一个特殊字符

      表达式:

      "/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
      

      可选的特殊字符:

      1. 至少一个特殊字符
      2. 至少一个数字
      3. 特殊字符是可选的
      4. 最少 6 个字符,最多 16 个字符

      表达式:

      "/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"
      

      如果不需要最小和最大条件,则删除.{6, 16}

      • 6 是最小字符数限制
      • 20 是最大字符数限制
      • ?= 表示匹配表达式

      【讨论】:

      • @Madhu 我已经更新了我对可选特殊字符条件的回答
      【解决方案11】:

      如何考虑以下正则表达式解决方案:

      ^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$

      验证以下内容:

      1. 至少一个小写字母
      2. 至少一个大写字母
      3. 至少一位数
      4. 至少一个特殊字符
      5. 至少应该有 8 个字符长。

      通过以下链接查看它https://regex101.com/r/qPmC06/4/

      【讨论】:

      • 您建议的正则表达式和 regex101 链接下的正则表达式有所不同。不应该是^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W\_])[A-Za-z\d\W\_]{8,}$吗?
      • @CraZ 我已经编辑了正则表达式,感谢您的建议。
      【解决方案12】:

      这对我有用:

      ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])([a-zA-Z0-9@$!%*?&]{8,})$
      
      • 至少 8 个字符;
      • 一个小写,一个大写,一个数字和一个特殊字符;
      • 没有空格。

      【讨论】:

        【解决方案13】:

        对于标准密码要求,我发现这很有用:

        • 至少 1 个字母

        • 至少 1 个数字

        • 不包含空格

        • 可选的特殊字符,例如@$!%*#?&^_-

        • 最少 8 个字符

          /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&amp;^_-]{8,}$/

        您还可以设置上限,例如 {8,32} 最长为 32 个字符。

        【讨论】:

          【解决方案14】:

          不直接回答问题,但它真的必须是正则表达式吗?

          我曾经使用过很多 Perl,并且习惯于使用正则表达式来解决问题。但是,当它们因所有的前瞻性和其他怪癖而变得更加复杂时,您需要编写数十个单元测试来消除所有这些小错误。

          此外,正则表达式通常比命令式或函数式解决方案慢几倍。

          例如,以下(不是很 FP)Scala 函数解决原始问题的速度比最流行答案的正则表达式快三倍。它的作用也很清楚,你根本不需要单元测试:

          def validatePassword(password: String): Boolean = {
            if (password.length < 8)
              return false
          
            var lower = false
            var upper = false
            var numbers = false
            var special = false
          
            password.foreach { c =>
              if (c.isDigit)       numbers = true
              else if (c.isLower)  lower = true
              else if (c.isUpper)  upper = true
              else                 special = true
            }
          
            lower && upper && numbers && special
          }
          

          【讨论】:

            【解决方案15】:
            ^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+,.\\\/;':"-]).{8,}$
                
            

            【讨论】:

              【解决方案16】:

              对于需要以下内容的更严格的验证:

              1. 至少一个大写字符
              2. 至少一个小写字符
              3. 至少一位数
              4. 至少一个符号/特殊字符@$!%*#?&^_-
              5. 最少 8 个字符/数字

              正则表达式:

              /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*#?&^_-]).{8,}/
              

              我希望它对更严格的人有所帮助。

              【讨论】:

                【解决方案17】:

                在 2020 年测试这个:

                ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
                

                验证自己

                const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
                const str = `some12*Nuts`;
                let m;
                
                if ((m = regex.exec(str)) !== null) {
                    // The result can be accessed through the `m`-variable.
                    m.forEach((match, groupIndex) => {
                        console.log(`Found match, group ${groupIndex}: ${match}`);
                    });
                }

                【讨论】:

                • @Toto 在这个线程上没有接受的答案,至少我没有看到任何答案,有很多投票的答案,但我没有看到接受的答案。另外,我发现了这个并在 regex101 上阅读了它的有效性,因此也将其与代码 sn-p 共享以验证其有效性。
                【解决方案18】:
                pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
                

                【讨论】:

                  【解决方案19】:
                  /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/
                  

                  这是在验证至少 1 个大写 1 个小写和 1 个数字时使用它的简单方法

                  这是我在快速验证中使用的示例

                  check('password')
                      .notEmpty()
                      .withMessage('Password cannot be null')
                      .bail()
                      .isLength({ min: 6 })
                      .withMessage('Password must be at least 6 characters')
                      .bail()
                      .matches(/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/)
                      .withMessage(
                        'Must have atleast 1 uppercase, 1 lowercase letter and 1 number'
                      ),
                  

                  【讨论】:

                    【解决方案20】:

                    根据您的需要,此模式应该可以正常工作。试试这个,

                    ^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}
                    

                    只需创建一个字符串变量,分配模式,然后创建一个布尔方法,如果模式正确则返回 true,否则返回 false。

                    示例:

                    String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";
                    String password_string = "Type the password here"
                    
                    private boolean isValidPassword(String password_string) {
                        return password_string.matches(Constants.passwordPattern);
                    }
                    

                    【讨论】:

                      【解决方案21】:

                      @ClasG 已经有suggested:

                      ^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
                      

                      但它不接受 _(下划线)作为特殊字符(例如 Aa12345_)。

                      改进的是:

                      ^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$
                      

                      【讨论】:

                        【解决方案22】:

                        我在这里发现了很多问题,所以我自己做了。

                        这是它的荣耀,有测试:

                        ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$
                        

                        https://regex101.com/r/DCRR65/4/tests

                        注意事项:

                        1. 不使用\w,因为其中包括我正在测试的_
                        2. 我在匹配符号时遇到了很多麻烦,但没有匹配行尾。
                        3. 没有具体指定符号,这也是因为不同的语言环境可能在他们的键盘上有不同的符号,他们可能想要使用。

                        【讨论】:

                        • 即使密码中有空格,这个正则表达式也会通过,对我不起作用
                        【解决方案23】:

                        演示:

                        function password_check() {
                          pass = document.getElementById("password").value;
                          console.log(pass);
                          regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
                          if (regex.exec(pass) == null) {
                            alert('invalid password!')
                          }
                          else {
                            console.log("valid");
                          }
                        }
                        <input type="text" id="password" value="Sample@1">
                        <input type="button" id="submit" onclick="password_check()" value="submit">

                        【讨论】:

                          【解决方案24】:
                          var strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
                          var mediumRegex = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})");
                          

                          最适合 javascript

                          【讨论】:

                          • 这些正则表达式的条件是什么?
                          • 我认为您的 mediumRegex 变量正在检查至少 6 个字符,而不是 8 个
                          【解决方案25】:
                          (?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}
                          

                          【讨论】:

                          【解决方案26】:

                          保持简单愚蠢:

                          这应该对你有用,永远。

                          正则表达式:^(.{0,7}|[^a-z]{1,}|[^A-Z]{1,}|[^\d]{1,}|[^\W]{1,})$|[\s]

                          如果您的密码与上述正则表达式匹配,则无效。

                          如果不匹配,则您的密码有效并且包含至少 8 个字符、一个大写字母、一个小写字母和一个符号或特殊字符。它也不包含空格、制表符或换行符。

                          正则表达式分解

                          1. .{0,7} - 如果密码包含 0 到 7 个字符,则匹配。
                          2. [^a-z]{1,} - 如果没有找到小写字母则匹配
                          3. [^A-Z]{1,} - 如果没有找到大写字母则匹配
                          4. [^\d]{1,} - 如果没有找到数字(在 [0-9] 之间)则匹配
                          5. [\s] - 如果找到空格、制表符或换行符,则匹配。

                          使用这种方法,在允许的符号方面没有限制或限制。如果您想限制允许的符号数量,只需将[^\W] 更改为[^YourSymbols]

                          【讨论】:

                            【解决方案27】:

                            另一种选择是在使用negated character class 的前瞻断言中使用contrast,可选择匹配除在匹配应匹配字符之前列出的任何字符。

                            ^(?=[^A-Z\n]*[A-Z])(?=[^a-z\n]*[a-z])(?=[^0-9\n]*[0-9])(?=[^#?!@$%^&*\n-]*[#?!@$%^&*-]).{8,}$
                            

                            查看regex demo

                            部分模式匹配:

                            • ^ 字符串开始
                            • (?=[^A-Z\n]*[A-Z]) 正向前瞻,断言 0+ 次除 A-Z 或换行符以外的任何字符。然后匹配一个字符 A-Z
                            • (?=[^a-z\n]*[a-z]) char a-z 的方法相同
                            • (?=[^0-9\n]*[0-9]) 数字 0-9 的方法相同
                            • (?=[^#?!@$%^&amp;*\n-]*[#?!@$%^&amp;*-]) 与您认为特殊的 char 相同的方法
                            • .{8,} 匹配除换行符以外的任何字符 8 次或更多次
                            • $字符串结束

                            备注

                            • 点也可以匹配空格。如果您不想允许匹配空格,则可以将 .{8,} 更改为 \S{8,} 以匹配 8 个或更多非空白字符
                            • 使用.\S 可以匹配多于前瞻断言中指定的字符。如果您只想匹配断言中使用的字符,您可以更改 .{8,} 以使用字符类仅匹配允许的字符 [#?!@$%^&amp;*A-Za-z0-9-]{8,}

                            const regex = /^(?=[^A-Z\n]*[A-Z])(?=[^a-z\n]*[a-z])(?=[^0-9\n]*[0-9])(?=[^#?!@$%^&*\n-]*[#?!@$%^&*-]).{8,}$/;
                            [
                              "abcA1#!A",
                              "#!asdfSFD1;",
                              "# a f F1 ;",
                              "1111111111",
                              "aaaaaaaa",
                              "11111111",
                              "AAAAAAAA",
                              "########",
                              "aA1#"
                            ].forEach(s =>
                              console.log(regex.test(s) ? `Match --> ${s}` : `No match --> ${s}`)
                            );

                            【讨论】:

                              【解决方案28】:

                              使用以下正则表达式满足以下条件:

                              Conditions: 1] Min 1 special character.
                                          2] Min 1 number.
                                          3] Min 8 characters or More
                              

                              正则表达式:^(?=.*\d)(?=.*[#$@!%&amp;*?])[A-Za-z\d#$@!%&amp;*?]{8,}$

                              可以在线测试:https://regex101.com

                              【讨论】:

                                【解决方案29】:

                                我们可以通过使用 HTML5 来做到这一点。

                                在模式属性中使用下面的代码,

                                pattern="(?=^.{8,}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
                                

                                它将完美运行。

                                【讨论】:

                                  【解决方案30】:

                                  您可以使用下面的正则表达式模式来检查密码是否符合您的期望。

                                  ((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*()]).{8,20})
                                  

                                  【讨论】:

                                    猜你喜欢
                                    • 2023-01-19
                                    • 2021-04-21
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多