2012-02-27 11 views
3

文字列をチェックしたいので、文字は0-9 a-z -のみです。grepで一部の文字のみを許可しますか?

私は

regex='[-a-z0-9]*' 
string='abcd!' 
if [[ $string =~ $regex ]] 
then 
    echo "valid" 
else 
    echo "not valid" 
fi 

を行うと、それは$string!が含まれているので、私はnot validを期待しているだろうvalidを出力します。

答えて

4

これを試してください:regex='^[-a-z0-9]*$'。これは、完全な行をこのクラスと強制的に一致させます。それ以外の場合は、一致するものが1つのみ、またはまったく一致しないものが(*のために)有効になります。 ^...$は、一致しないものがなければ、文字列の開始と終了を示します。

+5

制約に応じて、空の文字列も許可しない場合は、 '*'を '+'に変更します。 –

1

この正規表現が機能するためには、境界線を追加する必要があります。

'[-a-z0-9] *':これらの文字は、文字列の任意の場所に0回以上マッチします。

だから、正規表現に開始し、行の最後の文字を追加すると、あなたが探しているものでしょうが - 一度だけに「」

regex='^[-a-z0-9]*$' 

次のステップは、の出現数を制限することです。文字列の先頭または末尾にダッシュチャージャーを挿入できますか?試していない場合:

希望します。

関連する問題