regex - 如何使用正则表达式删除其密码不遵循密码策略的所有行?
问题描述
密码在“:”之后,密码策略是密码长度必须为 7 到 32 个字符,并且密码必须包含字母、数字和/或特殊字符的组合,不接受仅包含字母或仅数字的密码
意味着如果我们有
username:Password42
Username52@:sssdt3
user:Pass!626795
use:uss
它删除所有,只留下
username:Password42
user:Pass!626795
我尝试使用
^:*(?!(?=.*\d)(?=.*[a-z])(?=.*[A-Z])|(?=.*\d)(?=.*[a-z])(?=.*[!@#$%^&*()_+])|(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+])).*$\R*
但它效果不佳,我知道它有什么问题,也许请任何人为我的政策解决它?
解决方案
您可以使用此正则表达式删除密码错误的行^.+?:(.{1,6}|.{33,}|[[:alpha:]]+|\d+)$
::
- 太短,
- 太长,
- 仅由字母组成,
- 仅由数字组成。