2016-09-22 116 views
0

我需要幫助來了解如何檢查變量是否與定義的正則表達式匹配。假設我有VAR1="Abcd,1234",所有變量必須與regexpr波紋管匹配。正如我們看到的,由於它有一個逗號,我的var不匹配,所以如何檢查? 我創建了下面的if語句,但沒有工作:BASH檢查變量是否匹配regexpr

IF [[ ${VAR1} == ^[a-zA-Z0-9`[email protected]#$%^&*()_+-={}|[]:";'?] ]] 

謝謝。

+0

你必須正確地使用'\'轉義符在你的正則表達式。 – acornagl

回答

0
#!/bin/bash 

regex="^[^,]*[^ ,][^,]*$" 
var="$1" 

if [[ "$var" =~ $regex ]] 
then 
    echo "matches"; 
else 
    echo "doesn't match!"; 
fi 

,入住一些字符串沒有逗號..

+1

正則表達式過於複雜'^ [^,] + $'將足以確保至少有一個字符不是空格或逗號(與您的行爲具有完全相同的行爲)。 – Tensibai

+0

@Tensibai是的!沒錯。 – johnnynemonic

+2

@Tensibai這兩個正則表達式是不一樣的。 johnnynemonic的表達式將匹配你的字符串「x」。不過,我同意你的正則表達式與OP的意圖相符。 –