Regex 正则表达式和输入验证Bash
我正在尝试验证用户输入Regex 正则表达式和输入验证Bash,regex,bash,Regex,Bash,我正在尝试验证用户输入 if ! [[ "$operator" =~ ("[+-/*]") ]] ; then # validate user input to include decimals exec >&2; echo "error: Not a valid number, please try again"; echo else break echo fi 尝试了许多组合,但都不起作用?非常感谢Ypu
if ! [[ "$operator" =~ ("[+-/*]") ]] ; then # validate user input to include decimals
exec >&2; echo "error: Not a valid number, please try again";
echo
else
break
echo
fi
尝试了许多组合,但都不起作用?非常感谢Ypu的帮助 两个问题:
if ! [[ "$operator" =~ [-+]?[0-9]* ]] ; then
...
...
fi
- 丢失正则表达式周围的引号和括号;它们被认为是正则表达式的一部分。在本上下文中,
周围的引号也不需要,尽管它们没有害处$operator
是-
中的一个特殊字符,用于[]
之类的东西。将其作为解决此问题的第一个或最后一个字符a-z
我认为写
是一种习惯代码>在[[]]
中,但两者都可以。您是要接受注释和输出所暗示的数字,还是要接受正则表达式所暗示的运算符!外部的否定会否定内部的一切,例如![[-d文件| |-r文件]]不同于[[!-d文件| |-r文件]]
sgeorge-mn:~ sgeorge$ cat validate.sh
OPERATOR=$1
REGEX='[+*-/]';
if ! [[ $OPERATOR =~ $REGEX ]]; then
echo "Not valid input"
else
echo "Valid input"
fi
sgeorge-mn:~ sgeorge$ bash validate.sh '-'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '*'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '/'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '+'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh 's'
Not valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '132'
Not valid input
sgeorge-mn:~ sgeorge$ cat validate.sh
OPERATOR=$1
REGEX='[+*-/]';
if ! [[ $OPERATOR =~ $REGEX ]]; then
echo "Not valid input"
else
echo "Valid input"
fi
sgeorge-mn:~ sgeorge$ bash validate.sh '-'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '*'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '/'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '+'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh 's'
Not valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '132'
Not valid input