我想使用正则表达式来验证密码的字符要求。
要求: 密码应包含16个字符。
- 第1-4个字符应至少有1个数字。
- 第5-8个字符应至少有1个小写字母。
- 第9-12个字符应至少有1个大写字母。
- 第13-16个字符应至少有1个符号(标点符号)。
我尝试使用正向预查的正则表达式,但最终未能成功:
echo 'XXXX9999ccccXXX%' | grep -P '^((?=.*[0-9]).{4})((?=.*[a-z]).{4})((?=.*[A-Z]).{4})((?=.*\pP).{4})$'