Ric*_*ick 7 iphone validation objective-c ios
我在iphone的stackoverflow上找到各种电话号码验证,但似乎都没有验证它们似乎只是改变了格式.示例电话号码格式.
目标:通过警报输入此号码.北美人有或没有破折号.
所以有一些代码,但每一件事都是无效的任何想法.
- (void)textFieldDidEndEditing:(UITextField *)textField {
NSString *str=@"^\\+(?:[0-9] ?){6,14}[0-9]$";
NSPredicate *no=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",str];
if([no evaluateWithObject:textField.text]==NO)
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"Please Enter correct contact no." delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
else{
NSString *textValue = textField.text;
NSLog(@"Value: %@", textValue);
}
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*pta 26
编辑:我再次阅读这个问题,看到你想要验证,而不是突出显示电话号码,所以我向上移动了部分NSDataDetector.
您可以使用NSDataDetector(这是一个专门的子类NSRegularExpression)来搜索电话号码NSString(我相信这使用iPhone的默认电话号码检测算法).
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
error:&error];
NSUInteger numberOfMatches = [detector numberOfMatchesInString:string
options:0
range:NSMakeRange(0, [string length])];
Run Code Online (Sandbox Code Playgroud)
如果您使用UITextView(但可能UITextField不像您在此处使用的那样),您可以使用iPhone的默认电话号码检测算法通过设置其属性来突出显示电话号码dataDetectorTypes:
textView.dataDetectorTypes = UIDataDetectorTypePhoneNumber;
Run Code Online (Sandbox Code Playgroud)
请参阅UIDataDetectorTypes其他类型的数据检测器.
首先,真实的电话号码验证非常复杂。您是否仅限于 NANP(北美编号计划),还是正在寻找 E.164 号码?看起来您正在尝试主要匹配 E.164,尽管这通常不是大多数人会输入的数字。
您的匹配需要一个加号,后跟一系列长度在 7 到 15 之间的数字,数字之间可以有空格。你是这个意思吗?你传入什么字符串?
请注意,从 iOS4 开始,有NSRegularExpression一个比NSPredicate.
| 归档时间: |
|
| 查看次数: |
14828 次 |
| 最近记录: |