AWS Cognito 密码正则表达式 - 特定于 AWS Cognito

Jon*_*win 4 regex passwords oauth amazon-web-services amazon-cognito

有人可以给我正则表达式来匹配有效的 AWS Cognito 密码 - 带有数字、特殊字符(他们的列表)、小写和大写字母

AWS Cognito 默认长度限制为 6 个字符,并且有自己的特殊字符列表

请注意,AWS Congito 密码正则表达式特定于 AWS Congnito - 不仅仅是通用密码正则表达式。

Jon*_*win 27

原答案

export const PASSWORD_REGEX = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$*.{}?"!@#%&/,><\':;|_~`^\\]\\[\\)\\(]).{8,}')
Run Code Online (Sandbox Code Playgroud)
  • (?=.*[a-z]) 该字符串必须包含至少 1 个小写字母字符
  • (?=.*[A-Z]) 该字符串必须包含至少 1 个大写字母字符
  • (?=.*[0-9]) 字符串必须至少包含 1 个数字字符
  • (?=.[!@#\$%\^&]) 该字符串必须至少包含一个特殊字符 - 来自此处找到的 Cognito 列表
  • .{8,} - 必须至少为 8 个字符

更新答案

AWS Cognito 密码不支持空格,因此这里是 AWS Cognito 密码的另一个正则表达式。

/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\^$*.\[\]{}\(\)?\-“!@#%&\/,><\’:;|_~`])\S{8,99}$/
Run Code Online (Sandbox Code Playgroud)
  • / 表示正则表达式的开始
  • ^开始。匹配字符串的开头。
  • (?=.*[a-z]) 需要小写字母
  • (?=.*[A-Z]) 需要大写字母
  • (?=.*[0-9]) 需要数字
  • (?=.*[\^$*.\[\]{}\(\)?\-“!@#%&\/,><\’:;|_~`])需要特殊字符(仅AWS Cognito列出的特殊字符)。
  • \S 不允许空格(空格、制表符、回车)
  • {8,99} 最少 8 个字符,最多 99 个字符
  • $结尾。匹配字符串的结尾。
  • / 关闭。

互动示例https : //regexr.com/51a26https://regex101.com/r/TG6gD1/2

请注意,这已经在 J​​avascript 中进行了测试 - 它可能不适用于 PHP 或 Python。请评论是否有/没有

  • 我建议严格定义正则表达式允许的字符集: `/^(?=.*[az])(?=.*[AZ])(?=.*[0-9])(?=.* [\^$*.\[\]{}\(\)?\"!@#%&amp;\/\\,&gt;&lt;\':;|_~\`=+\-])[a-zA -Z0-9\^$*.\[\]{}\(\)?\"!@#%&amp;\/\\,&gt;&lt;\':;|_~\`=+\-]{8 ,98}$/` 当前的 Cognito 密码要求规范可在此处获取:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html。(我自己添加这个答案,但一些明亮的火花结束了这个问题,因为它看起来与另一个问题相似) (3认同)
  • 上面的正则表达式对我来说失败了,因为它缺少一些特殊字符。我在这里更新了它以使用默认的认知密码配置: `/^(?=.*[az])(?=.*[AZ])(?=.*[0-9])(?= .*[=+\-^$*.\[\]{}()?"!@#%&amp;/\\,&gt;&lt;':;|_~\`])\S{8,99}$ /` (2认同)
  • 根据 https://regex101.com/ ,正则表达式无效,因为正斜杠未转义。另外,我们在 S3 存储桶上部署的 React 版本中使用此正则表达式时遇到了真正的问题(在本地它有效)。我还怀疑 6 个字符是默认值,我认为它是 8 个。 (2认同)
  • Cognito 默认值包括 =、- 和 +。不幸的是,它们没有在官方文档中列出,但默认情况下,Cognito 承认它们。这些直接取自 Cognito AWS 控制台: `(^ $ * . [ ] { } ( ) ? - " ! @ # % &amp; / \ , &gt; &lt; ' : ; | _ ~ `` + =)` (2认同)