3

NSPredicateで電話番号(NSString *)を検証する方法は?

ルール:

最小10桁

最大10桁

最初の桁は7、8、または9である必要がありますありがとう

4

5 に答える 5

6

NSPredicate正規表現に基づくは、要件に適合します。

NSString *stringToBeTested = @"8123456789";

NSString *mobileNumberPattern = @"[789][0-9]{9}";
NSPredicate *mobileNumberPred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobileNumberPattern];

BOOL matched = [mobileNumberPred evaluateWithObject:stringToBeTested];

パターンをそれ自体で文字列に保持する必要はありませんが、正規表現はすでに十分に複雑であるため、NSPredicateフォーマット文字列から除外すると、コード全体がより明確になります。

于 2013-03-13T11:04:28.553 に答える
2

以下のコードを使用できます

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text
 {
  if(textField.tag == 111)
    {
    if([self MobileNumberValidate:string] == TRUE)
    return YES;
    else
    return NO;
}
return YES;
}

#pragma mark - Mobile Number validation
- (BOOL)MobileNumberValidate:(NSString*)number
{
NSString *numberRegEx = @"[0-9]";
NSPredicate *numberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegEx];
if ([numberTest evaluateWithObject:number] == YES)
    return TRUE;
else
    return FALSE;
}
于 2014-06-26T11:27:38.390 に答える
0
    NSString *phoneNumber = @"1234567890";
    NSString *phoneRegex = @"[789][0-9]{3}([0-9]{6})?"; 
    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; 
    BOOL matches = [test evaluateWithObject:phoneNumber];
于 2013-03-13T11:02:38.677 に答える
0

以下のコードは、要件に応じて機能します。

働き:

-(BOOL)validatePhone:(NSString *)enteredPhoneNumber
{
    NSString *phoneRegex = @"[789][0-9]{9}";
  // OR below for advanced type 
  //NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";

    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];

    return [phoneTest evaluateWithObject:enteredPhoneNumber];
}  

あれを呼べ:

if ([self validatePhone:@"9833112299"])
        {
            NSLog(@"Valid Phone Number");
        }
        else
        {
            NSLog(@"Invalid Phone Number");
        }
于 2017-12-29T06:43:51.300 に答える
0

'extension'を使用してグローバルにする必要な場所で使用する

最後の}の最後のViewControllerクラスのいずれかで、以下のコードを貼り付けます

extension String
{
func validateMobile() -> Bool
{
    return NSPredicate(format: "SELF MATCHES %@","[789][0-9].{9}").evaluate(with: self)
 }
 }

ViewControllerクラスでyourTxtFieldを検証する場合は、次のように呼び出すだけです。

if (yourTxtField.text?.validateMobile())!
{
 print("It is 10 digit, starting with 7/8/9")
}
else
{
 print("Invalid mobile number")
}
于 2019-08-30T13:50:49.050 に答える