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

密码至少包含八个字符,包括至少一个数字,包括小写和大写字母以及特殊字符,例如#、?、!。

它不能是您的旧密码,也不能包含您的用户名、“密码”或“网站名称”

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

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

如果密码必须是八个字符,包括一个大写字母、一个特殊字符和字母数字字符,我怎么写?


当前回答

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

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

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

它将完美地工作。

其他回答

这对我有用:

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

至少8个字符长;一个小写、一个大写、一个数字和一个特殊字符;没有空白。

根据我的情况,我很难找到最流行的答案。例如,我的验证失败,出现以下字符:;或[。我对白色列出我的特殊字符不感兴趣,因此我使用[^\w\s]作为测试-简单地放-匹配非单词字符(包括数字)和非空格字符。总而言之,这是对我有用的。。。

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


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

JSFiddle链接-涵盖各种情况的简单演示

/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/

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

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

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'
    ),

实际上,我刚刚在这里复制了第一个答案,并将其转换为一个更方便的正则表达式,它需要一个大写、一个小写和至少8个字符,但接受“中间”的所有内容。

这是一个正则表达式示例,需要

长度至少为8个字符至少一个小写字母至少一个大写字母

重要提示:此正则表达式还将排除所有其他字符,例如数字、特殊字符,如$、#、,!等等-只要规则1。至3。匹配输入字符串

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

注意正则表达式末尾的“.”符号。这将匹配几乎任何字符(以及任何可读字符)

我会回复彼得·莫滕森,但我没有足够的声誉。

他的表达完全符合每一项规定的最低要求。他的表达式不需要特殊字符的问题是,它们也不允许特殊字符,所以它们也强制执行最大要求,我不相信OP要求的。通常情况下,您希望允许您的用户将密码设置为他们想要的强度;为什么要限制强密码?

因此,他的“最少八个字符,至少一个字母和一个数字”表达:

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

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

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

or

^(?=.*[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,}$允许任何字符

or

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