如何检查字符串是否仅包含A-Z,a-z和0-9?

| 用模式验证字符串的最佳方法是什么?我会使用PCRE,但我不知道它是否嵌入在每个shell中以及如何使用。 例如,如何验证变量仅包含A-Z,a-Z和0-9,并且不包含空格\',\“,...?     
已邀请:
        
$ [[ \"foo\" =~ ^[A-Za-z0-9]*$ ]] ; echo $?
0
$ [[ \"foo \" =~ ^[A-Za-z0-9]*$ ]] ; echo $?
1
    
        
if `echo $VARIABLE | egrep \'[^A-Za-z0-9]\'`; then echo VARIABLE IS BAD; fi
纯壳选项
case \"$VARAIBLE\" in *[^A-Za-z0-9]*) echo VARIABLE IS BAD;; esac
    
        
if [[ \"$VARIABLE\" =~ ^[[:alnum:]]*$ ]]; then do something; fi;
有用的资源:http://bashshell.net/regular-expressions/,http://www.gnu.org/software/bash/manual/bashref.html     
        一种且唯一的便携式(无bash废话)方式:
`[ \"${var%%*[^A-Za-z0-9]*}\" ]`
请注意,没有启动任何外部程序,因此它比
grep
等人的程序更高效。解决方案。 请注意,字符类通常(不仅在shell中)对语言环境敏感。
var=ä
[ \"${var%%*[^a-z]*}\" ] && echo match  # prints \"match\"
因此,您可能需要考虑将语言环境临时设置为
C
或自己制作课程
`[ \"${var%%*[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*}\" ]`
    

要回复问题请先登录注册