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