가능한 중복 :
A comprehensive regex for phone number validation목표 - C 정규식 전화 번호
어떻게 목표 - C에서 전화 번호 (있는 NSString *)를 검증하기? 규칙 :
- 최소 7 자리
- 최대 10 자리
- 첫 번째 숫자, 6, 5, 3, 2이어야 8 개 항
감사
가능한 중복 :
A comprehensive regex for phone number validation목표 - C 정규식 전화 번호
어떻게 목표 - C에서 전화 번호 (있는 NSString *)를 검증하기? 규칙 :
감사
당신은 (RegexKit 등 같은) 정규 표현식 라이브러리를 사용할 수 있습니다, 또는 당신은 (좀 더 모호한 NSPredicate
를 통해 정규 표현식을 사용할 수 있지만 세 번째를 필요로하지 않는다 - 파티 라이브러리).
NSString *phoneNumber = ...;
NSString *phoneRegex = @"[235689][0-9]{6}([0-9]{3})?";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
BOOL matches = [test evaluateWithObject:phoneNumber];
당신이 다음 아이폰 OS 4 NSRegularExpression
을 도입, 아이폰에있는 경우, 또한 작동합니다 : 그것은 다음과 같이 보일 것입니다. NSPredicate
접근 방식은 Mac 및 iPhone (모든 버전)에서 작동합니다.
그냥 나를 업 그레했다, 당신은하지 않았다 :) –
그것은 미국에서만 작동합니다. – Yuji
미국 전역에서 작동하지 않기 때문에 OP가 자신이 처리하는 정확한 범위가 좁은 유스 케이스를 갖고 있다고 가정 할 수 있습니다. –
아이폰 OS 4.0 +이 작업을 수행하는 클래스가 내장되어 있습니다. NSRegularExpression
다른 모든 것에서는 타사 RegEx lib 사용자의 요구가 충분히 좁은 경우 rary, 또는 NSPredicate를 사용
전화 번호에는 고유 한 정규식을 사용하지 마십시오.하지 마십시오.
국가마다 전화 번호 형식이 변경되어 내 앱이 자국 이외의 지역에서 사용될 수 있습니다.
대신 Josh는 Apple이 제공하는 것을 사용합니다. here을 참조하십시오.
iOS 4.0 이상에서 사용할 수있는 NSDataDetector
클래스는 전화 번호 검색을 명시 적으로 지원하는 NSRegularExpression
의 특수 하위 클래스입니다. 전화 추출을 찾고 사람들을 위해
, 당신은 예를 들어, 텍스트에서 전화 번호를 추출 할 수 있습니다 :
NSString *userBody = @"This is a text with 30612312232 my phone";
if (userBody != nil) {
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
NSArray *matches = [detector matchesInString:userBody options:0 range:NSMakeRange(0, [userBody length])];
if (matches != nil) {
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypePhoneNumber) {
DbgLog(@"Found phone number %@", [match phoneNumber]);
}
}
}
}
`
NSDataDetector를 사용하여 국제 번호로 번호를 추출 할 수 있습니까? – kelin
목표 - C 자체가 거의 당신을 위해 무엇을하는 아주 최소한의 언어입니다 확실히 정규 표현식이 아닙니다. 사용하는 라이브러리 (코코아, 코코아 터치, POC 등)를 말하는 것이 훨씬 더 관련이 있습니다. – Chuck
코코아 터치. 감사합니다 – ohho
내 전화 번호는 영국에 0 또는 해외에있을 때 +44로 시작됩니다. – JeremyP