0
这种类型的问题在SO上被问了很多次,但是我有表达的问题,而且它不适合我。美国电话号码不正常表达式的正则表达式
我需要只允许号码,(,), - 在电话号码,为此,我有代码如下。 但只有未注释的表达式正在工作,这是只有数字没有(,), - 是允许的,我搜查并得到其他表达式应该允许(,),但这些都不工作。
什么可能是错的? 例子:9876545678, (123) 123-7657
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string isEqualToString:@""]) {
return TRUE;
}
if(textField == aTfdPhone)
{
if ([string isEqualToString:@"."]) {
return NO;
}
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^([0-9]+)?(\\.([0-9])?)?$";
// NSString *expression = @"^[(]?[2-9][0-9]{2}[)]?[ -]?[0-9]{3}[ -]?[0-9]{4}$";
// NSString * const expression = @"^([+-]{1})([0-9]{3})$";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error) {
NSLog(@"error %@", error);
}
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0){
return NO;
}
}
return TRUE;
}
可能重复的[电话号码验证综合正则表达式](http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) –
检查这 - - http://snipplr.com/view/7622/ – rishi
你的任何尝试都不符合你的要求。第一个注释限制了允许的数量,并且具有非常具体和严格的分组要求,但是看起来接近于你所说的你想要的。但是,特别是如果正则表达式对你完全陌生,你应该考虑一种不同的方法。一个常见的建议是修剪所有的空格和标点符号,然后检查你是否只有数字和足够长的序列。 – tripleee