Regex for password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters

前端 未结 30 3730
伪装坚强ぢ
伪装坚强ぢ 2020-11-21 04:28

I want a regular expression to check that:

A password contains at least eight characters, including at least one number and includes both lower and uppercase letter

30条回答
  •  失恋的感觉
    2020-11-21 05:18

    I would reply to Peter Mortensen, but I don't have enough reputation.

    His expressions are perfect for each of the specified minimum requirements. The problem with his expressions that don't require special characters is that they also don't ALLOW special characters, so they also enforce maximum requirements, which I don't believe the OP requested. Normally you want to allow your users to make their password as strong as they want; why restrict strong passwords?

    So, his "minimum eight characters, at least one letter and one number" expression:

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

    achieves the minimum requirement, but the remaining characters can only be letter and numbers. To allow (but not require) special characters, you should use something like:

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

    or

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

    Likewise, "minimum eight characters, at least one uppercase letter, one lowercase letter and one number:"

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

    meets that minimum requirement, but only allows letters and numbers. Use:

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

    or

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

提交回复
热议问题