我有一个字符串“ AbCdEfGG”,我需要测试bash中使用正则表达式的重复字母数字。这是我现在正在使用的代码。
# Check if the password contains a repeated alphanumeric character
if [[ "$password_to_test" =~ ([a-zA-Z0-9])\1{2,} ]]; then
let score=score-10
echo "Password contains a repeated alphanumeric character (-10 points)"
else
echo "Password does not contain a repeated alphanumeric character"
fi
但是它永远不会比分减少10。我在这里需要有关正则表达式模式的帮助。
答案 0 :(得分:1)
BASH regex不支持所有平台上的向后引用,因为它依赖于基础系统的regex库ERE实现(感谢@ BenjaminW)。
您可以使用此grep
:
str='AbCdEfGG'
if grep -Eq '([[:alnum:]])\1' <<< "$str"; then
((score -= 10))
echo "Password contains a repeated alphanumeric character (-10 points)"
else
echo "Password does not contain a repeated alphanumeric character"
fi
最好使用POSIC括号表达式[[:alnum:]]
代替[a-zA-Z0-9]