2013-11-21 92 views
0

餘米的工作在其上別人是如下NSPredicate檢查某些字符串

+(BOOL)emailValidate:(NSString *)email { 
NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
return [emailTest evaluateWithObject:email]; 
} 

+(BOOL) IDValidate:(NSString *)ID { 
NSString *regexString = @"[ A-Z0-9a-z_+-]{1,20}"; 
NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexString]; 
return [regex evaluateWithObject:ID]; 
} 

我想alow ID和電子郵件的空間「」和逗號「」實施了代碼,我搜索很多如何修改謂詞格式但找不到答案。

+1

如果你正在檢查郵件地址列表(這是「允許郵件中的逗號和空格」我想過的唯一方法),我會添加一個解決方案,可以刪除所有空間('stringByReplacingString: withString:')並使用'componentsSeparatedByString'(與昏迷)並檢查它們中的每一個。有了這個,你甚至可以知道哪個地址不適合。 – Larme

+0

是的,這個技巧會起作用,但不是推薦的方式,因爲當系統支持某些事情時,那麼爲什麼要爲自己做, – AsifHabib

+0

那麼,我建議的用途是告訴用戶哪個地址完全不適合,信息這不是由Mohammad Imran建議的「all in one」NSPredicate返回。這是萬一,這個用例可能會讓你(或SO的另一個成員)感興趣,因爲它應該很好地工作。 – Larme

回答

0

第一件事,Coma (,)不允許在電子郵件。但是,對於您的情況,使用下面的正則表達式:

For "xyx,+ xyz125" 
    ^[a-zA-Z0-9][a-zA-Z0-9,+_- ]+$ 
For email 
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
      + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$ 

希望能解決你的問題。

+0

謝謝,我需要此功能的其他領域,而不是電子郵件,其中文本也允許逗號和空格。我嘗試重用代碼,但無法理解字符串模式。 – AsifHabib

+0

imran的絕佳解決方案,你是天才。 –