【发布时间】:2014-03-10 11:39:35
【问题描述】:
我创建了一个简单的脚本来验证以下条件的密码
密码长度必须等于或大于 8。
password 可选包含 a-z,A-z,0-9 表示用户仅通过字符、仅数字或字符和数字混合设置密码。
用户还可以在密码中混用这个字符,如#,$,+,*。
所以下面的密码应该匹配
ptr*1$#+22A
111111111BB
password123
但如果用户传递的字符超出标准意味着低于密码应拒绝,则它会拒绝。
ptr*1$#+22A: //because ":" at the end of string which not in criteria
我的脚本如下
#! /bin/bash
password="ptr*1$#+22A"
if [[ ${#password} -ge 8 && "$password" || *[A-Z]* || "$password" || *[a-z]* || "$password" || *[0-9]* && "$password" || *[*$#+]* ]]
then
echo "pass"
else
echo "fail"
fi
它正在匹配密码,但它也传递密码ptr*1$#+22A:,它必须拒绝。
脚本中的问题是如果在&& 之后任何一个语句为真,则条件为真。我已经用&& 代替|| 尝试了这个脚本,但它要求密码必须至少包含一个
符合标准的字符,这不是我的要求。
那么有人知道如何验证我的密码,使其符合我的标准吗?
【问题讨论】:
-
/^[A-Za-z0-9#$+*]{8,}$/ -
+1 你应该回答,不要放在这里,然后我们可以投票
-
@BMW 好点。完毕。 :)
标签: regex linux bash validation passwords