我寫在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