使用正则表达式测试bash中重复的字母数字字符的字符串

时间:2018-09-17 14:15:03

标签: regex bash

我有一个字符串“ 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。我在这里需要有关正则表达式模式的帮助。

1 个答案:

答案 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]