Regex 如何检查字符串是否包含特定字符
我一直在尝试在bash脚本中创建一个条件,该条件将告诉我给定的字符串是否包含字母或连字符以外的字符 i、 这是一个合法字符串:Regex 如何检查字符串是否包含特定字符,regex,string,bash,contains,Regex,String,Bash,Contains,我一直在尝试在bash脚本中创建一个条件,该条件将告诉我给定的字符串是否包含字母或连字符以外的字符 i、 这是一个合法字符串:hello world 而那个不是:hello-123-there 这是我迄今为止尝试过的,但我认为我也有一个逻辑错误: if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then echo "the line is bad" exit fi (当然,$1指的是
hello world
而那个不是:hello-123-there
这是我迄今为止尝试过的,但我认为我也有一个逻辑错误:
if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then
echo "the line is bad"
exit
fi
(当然,$1指的是字符串)。
希望得到您的帮助。您可以使用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
谢谢,但是-我不懂“&&”和“| |”的用法,你能写下条件吗?谢谢。这就是你要找的吗?普通glob模式也有效:
[$str==*[^-[:alpha:]*]]&&echo invalid
正确@glennjackman。也感谢您使用此选项编辑答案。