我认为更好的方法是使用谓词来过滤你的数组,就像Larme所说的那样。
试试这样做:
NSArray *answer = @[@"John Appleseed", @"john@apple.com", @"john@icloud.com", @"+14120123456", @"invalid@email", @"another@@@invalid.email"];
NSArray *filteredArray = [answer filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF CONTAINS \"@\""]];
if (filteredArray.count > 0) {
}
filteredArray 将包含所有包含 @ 符号的对象:
john@apple.com,
john@icloud.com,
invalid@email,
another@@@invalid.email
另一种方法是通过筛选有效的电子邮件字符串来过滤数组,而不仅仅是在符号处:
NSArray *answer = @[@"John Appleseed", @"john@apple.com", @"john@icloud.com", @"+14120123456", @"invalid@email", @"another@@@invalid.email"];
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSArray *filteredArray = [answer filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]];
if (filteredArray.count > 0) {
}
filteredArray 只会包含与电子邮件掩码匹配的对象
john@apple.com,
john@icloud.com
NSPredicate
来解决? - LarmerangeOfString:
来检测子字符串。 - Phillip Mills