尝试这个:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=S+$).{8,}$
说明:
^ # start-of-string(?=.*[0-9]) # a digit must occur at least once(?=.*[a-z]) # a lower case letter must occur at least once(?=.*[A-Z]) # an upper case letter must occur at least once(?=.*[@#$%^&+=]) # a special character must occur at least once(?=S+$) # no whitespace allowed in the entire string.{8,} # anything, at least eight places though$ # end-of-string
由于每个规则都是独立的“模块”,因此添加,修改或删除单个规则很容易。
所述
(?=.*[xyz])构建体吃整个字符串
(.*)和回溯到第一次出现在那里
[xyz]可以匹配。如果
[xyz]找到则成功,否则失败。
另一种选择是使用一个勉强的限定词:
(?=.*?[xyz])。对于密码检查,这几乎没有什么区别,对于更长的字符串,这可能是更有效的变体。
当然,最有效的变体(但最难读取和维护,因此最容易出错)
(?=[^xyz]*[xyz])。对于这种长度的正则表达式,并为此目的,我不建议这样做,因为它没有实际好处。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)