2013-11-21 5 views
0

내가 ID 및 이메일에 공백 ""와 쉼표를 ","ALOW 할는 자 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]; 
} 

을 다음과 다른 사람에 의해 구현 된 코드에 일하고 있어요 확인, 나는 검색 predicateFormat을 변경하는 방법은 많이 있지만 대답을 찾을 수 없습니다.

+1

메일 주소 목록을 확인하는 경우 (필자가 생각한 "혼수 상태 및 메일 공간 허용"의 유일한 방법) 해결책은 모든 공간을 삭제하는 것입니다 ('stringByReplacingString : withString :')을 사용하고'componentsSeparatedByString' (코마 포함)을 사용하고 각각을 검사합니다. 이것으로 어떤 주소가 맞지 않는지 알 수 있습니다. – Larme

+0

예,이 트릭은 작동하지만 추천 할만한 방법이없는 경우 시스템이 당신에게 무언가 지원을 제공 할 때처럼 작동하지 않을 것입니다. – AsifHabib

+0

글쎄, 제가 제안한 것은 사용자에게 어떤 주소가 정확하게 맞지 않는지 알려주는 것입니다 모하마드 이므 란 (Mohammad Imran)이 제안한 "일체형"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의 멋진 솔루션은 천재입니다. –