【问题标题】:How to check if a string contains a specific character如何检查字符串是否包含特定字符
【发布时间】:2014-01-08 06:18:01
【问题描述】:

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

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

而那个不是:hello-123-there

这是我迄今为止尝试过的,但我认为我也有一个逻辑错误:

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

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

【问题讨论】:

    标签: regex string bash contains


    【解决方案1】:

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

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

    或者使用全局:

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

    等同于:

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

    【讨论】:

    • 谢谢,但是 - 我不明白“&&”和“||” usgae,你能写下条件吗?谢谢。
    • 这是您要找的吗?
    • 普通 glob 模式也可以工作:[[ $str == *[^-[:alpha:]]* ]] && echo invalid
    • 没错@glennjackman。也感谢使用此选项编辑答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2022-06-14
    • 2021-11-21
    • 2015-09-28
    相关资源
    最近更新 更多