首页 > 解决方案 > 密码要求检查

问题描述

我正在尝试编写密码要求检查器..但是正则表达式会导致一些问题,有什么建议吗?

regex="^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])([a-zA-Z0-9@$!%*?&]{7,16})$"

标签: linuxbashscript

解决方案


这是从多次测试中受益的事情:

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

让用户知道哪些标准失败了会很有帮助。


推荐阅读