我想檢查一個字符串,所以它只包含字符0-9 a-z -
。只允許一些字符與grep?
當我做
regex='[-a-z0-9]*'
string='abcd!'
if [[ $string =~ $regex ]]
then
echo "valid"
else
echo "not valid"
fi
它輸出valid
,在那裏我本來期望not valid
因爲$string
包含!
。
我想檢查一個字符串,所以它只包含字符0-9 a-z -
。只允許一些字符與grep?
當我做
regex='[-a-z0-9]*'
string='abcd!'
if [[ $string =~ $regex ]]
then
echo "valid"
else
echo "not valid"
fi
它輸出valid
,在那裏我本來期望not valid
因爲$string
包含!
。
試試這個:regex='^[-a-z0-9]*$'
。它將強制整個線路匹配這個類。否則,只有單個匹配或根本不匹配(由於*
)將返回有效。 ^...$
表示字符串開始和結束時沒有任何不匹配的內容。
你將不得不爲這個正則表達式的工作增加邊界。
'[-a-z0-9] *'表示:匹配字符串中任意位置的這些字符0或更多次。
因此增加啓動和換行字符結束的正則表達式會做你在找什麼:
regex='^[-a-z0-9]*$'
下一步是要的出現的次數限制「 - 」只有一次。破折號charcter可以在字符串的開始或結尾出現嗎?如果不嘗試:
regex='^[a-z0-9]*-?[a-z0-9]*$'
希望這會有所幫助。
根據約束,如果你想禁止空字符串,則將'*'改爲'+'。 – 2012-02-27 16:42:22