如何检查字符串是否至少有一个字母字符?

时间:2013-01-02 23:34:36

标签: regex linux bash shell

我想检查一个字符串是否至少有一个 字母字符? 正则表达式可能是:

"^.*[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”进行测试,以上两个脚本输出的结果都是“是”,所以它们是错误的

如何实现我的目标?谢谢!

4 个答案:

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