Regex 如何检查字符串是否只包含a-Z、a-Z和0-9?

Regex 如何检查字符串是否只包含a-Z、a-Z和0-9?,regex,validation,bash,pcre,Regex,Validation,Bash,Pcre,用模式验证字符串的最佳方法是什么?我会使用PCRE,但我不知道它是否嵌入到每个shell中,以及如何使用它 例如,如何验证该变量仅包含A-Z、A-Z和0-9,而不包含空格“,” 纯壳期权 case "$VARAIBLE" in *[^A-Za-z0-9]*) echo VARIABLE IS BAD;; esac 有用的资源:,唯一的便携式(无bash垃圾)方式: 请注意,没有启动外部程序,因此这比grep等解决方案更有效 请注意,字符类通常(不仅在shell中)对区域设置敏感 var=ä [

用模式验证字符串的最佳方法是什么?我会使用PCRE,但我不知道它是否嵌入到每个shell中,以及如何使用它

例如,如何验证该变量仅包含A-Z、A-Z和0-9,而不包含空格“,”

纯壳期权

case "$VARAIBLE" in *[^A-Za-z0-9]*) echo VARIABLE IS BAD;; esac
有用的资源:,

唯一的便携式(无bash垃圾)方式:

请注意,没有启动外部程序,因此这比
grep
等解决方案更有效

请注意,字符类通常(不仅在shell中)对区域设置敏感

var=ä
[ "${var%%*[^a-z]*}" ] && echo match  # prints "match"

这样,您可能需要考虑临时设置区域设置为<代码> c>代码>或使类自己

`[ "${var%%*[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*}" ]`

通常,在bash中,您需要非常依赖
grep
awk
来进行任何模式匹配需要另一组括号,后面应该跟
*
以使其匹配多个字符。固定版本:
如果[[“$VARIABLE”=~^[:alnum:]*$]];然后做点什么;fi
感谢您更正语法。更新后不会混淆。小心使用此字符。
$[]一“=~^[:alnum:][]*$];echo$?
0
@Ignacio:为我打印1(如预期)。是否
在其他语言环境中的alnum字符类中(我使用LANG=en_US.UTF-8)?如果bash使用Unicode类,那么它将是真的,如
在日语中为“1”。
if [[ "$VARIABLE" =~ ^[[:alnum:]]*$ ]]; then do something; fi;
`[ "${var%%*[^A-Za-z0-9]*}" ]`
var=ä
[ "${var%%*[^a-z]*}" ] && echo match  # prints "match"
`[ "${var%%*[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*}" ]`