如何检查字符串是否包含特定字符

时间:2013-12-19 15:41:19

标签: regex string bash contains

我一直试图在bash脚本中创建一个条件,告诉我给定的字符串是否包含字母或连字符以外的字符。

,即这是一个合法的字符串:hello-world

而那个不是:hello-123-there

这是我到目前为止所尝试过的,但我认为我也有一个逻辑错误:

if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then
        echo "the line is bad"
        exit
fi

(当然,$ 1指的是字符串)。 很想得到你的帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用BASH的正则表达式功能:

[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid"

或使用glob:

[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid"

与...相同:

if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then
    echo "valid"
else
    echo "invalid"
fi