我写在bash中,这个脚本应该输出'成功',但它没有。数字的正则表达式是否错误?正则表达式的数字
var=5
if [[ "$var" =~ ^[:digit:]$ ]]; then
echo success
fi
Thnx!
我写在bash中,这个脚本应该输出'成功',但它没有。数字的正则表达式是否错误?正则表达式的数字
var=5
if [[ "$var" =~ ^[:digit:]$ ]]; then
echo success
fi
Thnx!
你需要把[:digit:]
字符类中:
var=5
if [[ "$var" =~ ^[[:digit:]]$ ]]; then
echo success
fi
还要注意的是,如果你想匹配的多位数(> 9
),您将需要使用加元字符(+
):
if [[ "$var" =~ ^[[:digit:]]+$ ]]; then
echo success
fi
在命名方面,我认为'[:digit:]'是一个字符类,但它需要进入括号表达式'[]'。 http://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap09.html#tag_09_03_05 –
@TomFenech感谢您的澄清。 – andlrc
你需要把字符类[:digit:]
支架表达[]
内:
[[ "$var" =~ ^[[:digit:]]$ ]]
在ASCII语言环境,这是必然等同于:
[[ "$var" =~ ^[0-9]$ ]]
'[ “$ VAR”=〜^ [[:数字:] $]' – anubhava
明白了! Thnx anubhava! –
请参阅:[堆栈溢出正则表达式常见问题](http://stackoverflow.com/a/22944075/3776858) – Cyrus