这种类型的问题在 SO 上被问了很多次,但我在表达方面遇到了问题,它对我不起作用。
我只需要在电话号码中允许数字,(,),-,为此我有如下代码。但是只有未注释的表达式有效,并且仅允许数字 no (,),- 并且我搜索并获得了其他应该允许 (,) 的表达式,但这些表达式也不起作用。
有什么问题?例子: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;
}