【问题标题】:NSRegularExpression pattern for mobile no validation [closed]用于移动无验证的 NSRegularExpression 模式 [关闭]
【发布时间】:2017-07-04 08:03:43
【问题描述】:

请有人帮我在 ObejctiveC 中使用 NSRegularExpression 制作手机号码验证模式。 这是规则:

  1. Number should start with 01 
  2. 3rd digit between 5 and 9
  3. Total length should be 11

【问题讨论】:

  • 你可以使用正则表达式来验证它
  • @mkowal87 你能提供一个样本吗,因为我是新手,这对我来说很容易

标签: ios objective-c validation mobile


【解决方案1】:

执行验证的最佳方法是使用正则表达式。 iOS 中有一个名为NSRegularExpression 的包装器。不幸的是,我不能给你一些“神奇的子弹”代码,因为你的正则表达式可能需要与我的不同。 (鉴于我正在寻找英国手机号码,您的可能不是)。

此代码根据英国手机号码标准验证字符串。

NSString *str = @"07578565203"
NSError *err;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"(07\d{8,9})$" options:nil error:&err];
NSTextCheckingResult *result [regex firstMatchInString:str options:nil range:NSMakeRange(0, str.length)];
if (result == 1) {
    // number is valid
} else {
    // number is invalid, check err to see why
}

注意NSRegularExpression 的initWithPattern。您必须传递适用于您的电话号码的模式。您可以生成一个here。这个网站也很适合教你 RegEx。

如果你卡住了,告诉我你住的电话号码的规则,我会写一个正则表达式。

编辑:根据 OP 的评论,适用于孟加拉国的 RegEx 将是 (01[5-9]\d{8})$。

【讨论】:

  • 感谢@Jacob King 分享代码。如果您可以根据我的规则分享正则表达式,那将非常有帮助这是我的规则: 1. 数字应该以 01 开头 2. 5 到 9 之间的第 3 位 3. 总长度应该是 11 这是手机号码格式在孟加拉国
  • 查看孟加拉国正则表达式的编辑。
  • 感谢@Jacob King,这真的很有帮助。这是我尝试过的 NSError *errRegex = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(01[5-9]\\d{8})$" 选项:NSRegularExpressionCaseInsensitive 错误:&errRegex]; NSUInteger countMatches = [正则表达式 numberOfMatchesInString:mobileNo options:0 range:NSMakeRange(0, [mobileNo length])];
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2012-05-11
相关资源
最近更新 更多