2012-06-01 56 views
0

分隔的字段我試圖驗證字符串匹配特定模式。但是,如果第三個領域在那裏,它必須是ABC。我想這樣的:正則表達式與固定值

^#:[^:]+:?([^:]+)?:?(ABC)?:?([^:]*:?)*$ 

但它也匹配線,其中不完全具備ABC的第三場。

回答

3

請試試這個:

^#((((:[^:]+))((:[^:]*))?)|((((:[^:]+))(:[^:]*))((:(ABC)?)(:[^:]*)*)?))$ 
0

你可以使用類似的表達式:

(?x) ^#:[^:]+ (?: :[^:]+ (?: :ABC (?: :[^:]*)* )? )? $ 

本書雖然這可能是更好的(更具可讀性)使用其他編程結構來完成。 Perl的例子:

my @l = split /:/, '#:XY1:XY2:ABC:::xy::'; 
if($l[0] eq '#' && $l[3] eq 'ABC'){ 
    # do stuff 
}