我想检查一个字符串是否至少有一个 字母字符? 正则表达式可能是:
"^.*[a-zA-Z].*$"
但是,我想判断一个字符串是否至少有一个 字母字符? 所以我想使用,比如
if [ it contains at least one alphabetic character];then
...
else
...
fi
所以我对如何使用正则表达式感到茫然
我试过
if [ "$x"=~[a-zA-Z]+ ];then echo "yes"; else echo "no" ;fi
or
if [ "$x"=~"^.*[a-zA-Z].*$" ];then echo "yes"; else echo "no" ;fi
并用x =“1234”进行测试,以上两个脚本输出的结果都是“是”,所以它们是错误的
如何实现我的目标?谢谢!
答案 0 :(得分:3)
试试这个:
#!/bin/bash
x="1234"
y="a1234"
if [[ "$x" =~ [A-Za-z] ]]; then
echo "$x has one alphabet"
fi
if [[ "$y" =~ [A-Za-z] ]]; then
echo "Y is $y and has at least one alphabet"
fi
答案 1 :(得分:1)
如果您想要便携,我会使用/usr/bin/grep
致电[A-Za-z]
。
答案 2 :(得分:0)
使用尊重语言环境的[:alpha:]
字符类,使用正则表达式
[[ $str =~ [[:alpha:]] ]] && echo has alphabetic char
或全球风格的模式
[[ $str == *[[:alpha:]]* ]] && echo has alphabetic char
答案 3 :(得分:0)
在 sh 脚本中,在 if 子句中使用 grep 是很常见的。你可以在/etc/rc.d /.
中找到很多这样的例子if echo $theinputstring | grep -q '[a-zA-Z]' ; then
echo yes
else
echo no
fi