2013-11-01 29 views
0

似乎無法弄清楚如何檢查一個字符串,以便不允許同一行中的相同兩個字符。Objective-c正則表達式檢查兩個數字的序列

我不希望任何人能夠以「00」提交數據。

+2

雖然這是可能的一個複雜的正則表達式,爲什麼不只要採取簡單的方法並循環訪問字符,以確保同一個字符不會連續出現兩次? –

+0

「00」是你想檢測的*唯一的東西,還是你正在尋找「11」,「22」...「99」? – Caleb

+0

只是「00」不希望信用卡日期包含「00/00」或「00/13」 – jdog

回答

1

什麼剛:

(\d)\1+ 

\d匹配任何數字和任何在第一位匹配當它出現超過一次的\1+匹配。


有關您的意見,雖然,它更容易只是爲了檢查:

if ([expiryDate rangeOfString:@"00"].location != NSNotFound) 
{ 
    //Invalid date 
} 

,甚至可能更驗證:

NSArray *components = [expiryDate componentsSeparatedByString:@"/"]; 
int month = [components[0] intValue]; 
int year = [components[1] intValue]; 
NSAssert(month > 0 && month <= 12, @"Invalid Month"); 
NSAssert(year >= 13 /*current year*/ /* (optionally) && year < 20 (or some other future year)*/, @"Invalid year");