Regex:验证字符串是否仅为[a-zA-Z 0 -9],8个以上字符,至少包含小写、大写和数字之一

jtw3ybtb  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(168)

问题很大程度上就在标题中。我需要检查一个字符串是否只是字母数字-没有特殊字符,即至少包含一个小写字母,至少一个大写字母,至少一个数字。
passWORD1验证,password2, PASSWORD3, passWORD, passWORD5*, psWD6不验证。
它类似于Regex to check if a string contains at least A-Za-z0-9 but not an &,但不满足所有条件。我也可以使用iterating through the criteria,但我真的需要一个regex来将其馈送到validate.js模块(因此JS/节点),这只会抛出一个单一的错误,一次说明所有密码条件)

3vpjnl9f

3vpjnl9f1#

你应该试试这个:

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

^ Start of the string
(?=.*[a-z]) lowercase validation
(?=.*[A-Z]) uppercase validation
(?=.*\d) numbers validation
[a-zA-Z\d] characters allowed
{8,} minimum size (you can put the maximum after the comma)
$ End of the String
nvbavucw

nvbavucw2#

满足所有要求所需的正则表达式如下所示,

^(?=[A-Z0-9]*[a-z])(?=[a-zA-Z]*[0-9])(?=[a-z0-9]*[A-Z])[a-zA-Z0-9]{8,}$

基本上,您需要三个**positive look aheads**来确保满足至少存在三种字符的三个条件,并最终使用正则表达式中提到的字符集后跟量词来使用字母数字字符。

    • 说明:**
  • ^-字符串开始
  • (?=[A-Z0-9]*[a-z])-向前看以确保至少有一个小写字母
  • (?=[a-zA-Z]*[0-9])-向前看以确保至少有一个数字
  • (?=[a-z0-9]*[A-Z])-向前看以确保至少有一个大写字母
  • [a-zA-Z0-9]{8,}-捕获八个或更多字母数字字符
  • $-匹配字符串结尾
    • 第一个e第一个f第一个x

相关问题