【问题标题】:Reqular expression for 11 digit phone number with 09 prefix带 09 前缀的 11 位电话号码的正则表达式
【发布时间】:2015-08-25 12:36:07
【问题描述】:

我正在尝试编写一个正则表达式来处理以“0”开头的电话号码,后跟“9”和 9 位数字,可以是 0-9 之间的任何数字。

-(BOOL) validateAlphabets: (NSString *)text{      
     NSString *Regex = @"what should be here?!";
     NSPredicate *TestResult = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex];
     return [TestResult evaluateWithObject:text];
}

然后我通过以下方式检查输入验证:

if (![self validateAlphabets:self.phoneNumber.text]){
      NSLog(@"Invalid");
   }
else{
      NSLog(@"Valid!");
 }

【问题讨论】:

标签: objective-c regex phone-number


【解决方案1】:

我会去

(0|۰)(9|۹)(\d|[dummy]){9} //<-- \d being any digit

dummy 替换为您要支持的字母数字

【讨论】:

  • 给我们你的意见,这你要求@Niloufar
  • 09198601950,我将编辑代码,请检查我的if语句是否正确。
  • 我已经看到了,但我不知道为什么它总是对我无效!
  • 当正则表达式用于NSString 时,反斜杠必须转义:@"09\\d{9}"
【解决方案2】:

你可以尝试使用这个正则表达式:

09[0-9]{9}

REGEX DEMO

您可以尝试在您的函数中测试它,如下所示:

-(BOOL) validateAlphabets: (NSString *)text{      
     NSString *Regex = @"what should be here?!";
     NSPredicate *TestResult = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex];
     if(TestResult evaluateWithObject: text)
     return true;
     else
     return false;
}

【讨论】:

  • 谢谢,问题是我的输入可以是波斯语或英语,所以当它是波斯语时,它会返回否。请告诉我如何支持类似的内容:(0|0)(9 |۹)[0-90-۹]{9},例如:۰۹۱۹۸۶۰۱۹۵۰@Rahul
  • 请告诉我如何支持类似:(0|0)(9|۹)[0-90-۹]{9},例如:۰۹۱۹۸۶۰۱۹۵۰
【解决方案3】:

使用NSString 方法:

- (BOOL)validateAlphabets: (NSString *)text {
    NSString *regEx = @"09\\d{9}";
    NSRange range = [text rangeOfString:regEx options:NSRegularExpressionSearch];
    return range.location != NSNotFound;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2017-09-23
    • 2014-02-15
    相关资源
    最近更新 更多