2

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

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

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

4

4 回答 4

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
于 2013-01-02T23:46:24.653 回答
2

如果你想便携,我会打电话/usr/bin/grep[A-Za-z].

于 2013-01-02T23:48:09.193 回答
0

使用符合[:alpha:]您的语言环境的字符类和正则表达式

[[ $str =~ [[:alpha:]] ]] && echo has alphabetic char

或全局样式的模式

[[ $str == *[[:alpha:]]* ]] && echo has alphabetic char
于 2013-01-03T00:45:13.727 回答
0

在sh脚本中,在if子句中使用grep是很常见的。您可以在 /etc/rc.d/ 中找到许多这样的示例。

if echo $theinputstring | grep -q '[a-zA-Z]' ; then
    echo yes
else
    echo no
fi
于 2013-01-03T05:41:55.557 回答