请检查下面的代码,我想标注" -n"和" -n.n"好多少。字符串如" - .n"和" -n。"不是很好的数字。在哪里" n"是" [0-9] +"。
#!/bin/bash
function test_number() {
if ! ([ -z $2 ]); then
if [[ ${2:0:1} == "-" ]]; then
if [[ ${2:1} =~ [0-9]+(\.[0-9]+)? ]]; then
echo "${2}: good number"
fi
else
echo "$2: string"
fi
fi
}
test_number "1" "-x"
test_number "1" "-1"
test_number "1" "-1."
test_number "1" "-2.1"
test_number "1" "-.1"
test_number "1" ".1"
test_number "1" "x"
这是测试结果;错误的案例被标记。
-1: good number
-1.: good number <== wrong
-2.1: good number
-.1: good number <== wrong
.1: string
x: string
感谢您的帮助!
答案 0 :(得分:0)
<击> 撞击>
<击>这应该有效
^(-[0-9]+)?(\.[0-9]+)?$
击> <击> 撞击>
此处^
和$
用于匹配整个字符串/行,分别代表字符串/行的开头和结尾。
以下是更正后的版本
^-?[0-9]+(\.[0-9]+)?$
注意:删除?
,使其成为减号-
的必填项。
点数:
-
应附带一些数字以避免-.n
匹配.
应该在某些数字之前,以避免-n.
匹配