问题很大程度上就在标题中。我需要检查一个字符串是否只是字母数字-没有特殊字符,即至少包含一个小写字母,至少一个大写字母,至少一个数字。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/节点),这只会抛出一个单一的错误,一次说明所有密码条件)
2条答案
按热度按时间3vpjnl9f1#
你应该试试这个:
nvbavucw2#
满足所有要求所需的正则表达式如下所示,
基本上,您需要三个**positive look aheads**来确保满足至少存在三种字符的三个条件,并最终使用正则表达式中提到的字符集后跟量词来使用字母数字字符。
^
-字符串开始(?=[A-Z0-9]*[a-z])
-向前看以确保至少有一个小写字母(?=[a-zA-Z]*[0-9])
-向前看以确保至少有一个数字(?=[a-z0-9]*[A-Z])
-向前看以确保至少有一个大写字母[a-zA-Z0-9]{8,}
-捕获八个或更多字母数字字符$
-匹配字符串结尾