小编Pun*_*ter的帖子

需要帮助编写 bash 脚本,该脚本使用正则表达式来验证密码输入是否满足长度和特殊字符要求

我已经为此工作了一段时间,访问了数十个网站并尝试了各种组合;但是,我无法让脚本按预期运行。即使它们在https://regex101.com/中工作,我仍然无法让它们在 bash 中工作。

我正在尝试编写一个 bash 脚本,该脚本将验证输入(“$password”)的长度至少为八个字符,并且至少包含一个数字和至少一个以下特殊字符:#?!@$ %^&* -

GNU bash,版本 5.1.16(1)-release-(x86_64-pc-linux-gnu)

任何帮助将不胜感激!

read -p "Please enter a password to test: " password
echo "You entered '$password'"
# I have tried all of the following (plus a few others) and cannot get it to work
#regex='^[a-zA-Z0-9#@$?]{8,}$'
#regex='^[a-zA-Z0-9@#$%&*+-=]{8,}$'
#regex='^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[@#$%&*+-=]).{8,}$'
#regex='^(?=.*?[a-zA-Z0-9])(?=.*?[#?!@$ %^&*-]).{8,}$'
#regex='^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[#?!@$ %^&*-]).{8,}$'
if [[ $password =~ $regex ]]; then
        echo "This works"
else
        echo "Nope"
fi
Run Code Online (Sandbox Code Playgroud)

bash special-characters regular-expression

2
推荐指数
1
解决办法
1930
查看次数