我正在尝试匹配字符串,例如:“+99”、“-82”、“5”、“auto”和“max”==auto 和 max 以及带或不带符号的数字(比如说整数)
我试过正则表达式
var='^([+|-]{0,1}[0-9][0-9]*)|(auto)|(max)$'
但它在“至少 n 次但不超过 m”的事情上失败了,在我的情况下 {0,1} 无论如何我测试了 var='ab{0,1}' 和 var='ab{2}' 而这些不也不行
我没有得到任何进一步的信息,但我认为下一个问题可能是这些:()
我正在使用 #!/bin/bash 版本 4.2.24(1)
提前致谢!
edit1: 我不知道如何将此正则表达式分组?按照 Karoly Horvath 的建议工作。我正在使用我在某处找到的这个检查功能。
#!/bin/bash
INTEGER_MAX='^([+-])?[0-9][0-9]*$'
function isNumeric() {
check=`echo $1 | sed "s/\($2\)//"`
if [ -z ${check} ]; then
return 0
else
return 1
fi
}
isNumeric "$1" "$INTEGER_MAX" && echo "passed"
编辑2 - 已解决
它正在使用
RE='(^([+-])?[0-9]+$)|(^auto$)|(^max$)'
测试
[[ $string =~ $pattern ]] && echo "passed"
谢谢!