linux - 密码要求检查
问题描述
我正在尝试编写密码要求检查器..但是正则表达式会导致一些问题,有什么建议吗?
regex="^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])([a-zA-Z0-9@$!%*?&]{7,16})$"
解决方案
这是从多次测试中受益的事情:
password=$1
length=${#password}
# separate regular expressions
lower='[abcdefghijklmnopqrstuvwxyz]'
upper="${lower^^}"
digit='[0123456789]'
punct='[@$!%*?&]'
if [[ $password =~ $upper ]] &&
[[ $password =~ $lower ]] &&
[[ $password =~ $digit ]] &&
[[ $password =~ $punct ]] &&
(( 7 <= length && length <= 16 ))
then
echo OK
else
echo not OK
fi
让用户知道哪些标准失败了会很有帮助。
推荐阅读
- python - 如何用metpy正确计算温度平流,单位误差
- php - 在 Laravel 8 中动态获取选中的单选按钮值
- keycloak - 处理领域名称中具有特殊字符的 Keycloak 领域
- video - A帧切换模板导致声音(视频?)重叠
- c# - 使用空白键值对建模 json
- python - torchvision.datasets 中数据集的 .data 属性不适用于 ImageFolder?
- linux - 如何从文件 Bash 中调用主机列表的变量
- javascript - 选择当前可见的 DIV ID 并存储在变量中
- blazor - 为什么我在提交 Blazor Server 表单时收到 404 错误?
- python - 将多列分组为几列-Pandas 数据框