美文网首页
正则表达式判断手机号码

正则表达式判断手机号码

作者: Billy_W | 来源:发表于2016-09-29 09:35 被阅读0次

    使用方法:新建一个继承于NSString的类,再导入NSString+Check.h头文件,通过判断字符串的属性值(checkPhoneNumInput)YES or NO 即可。

    #import

    @interface NSString (Check)

    -(BOOL)checkPhoneNumInput;

    @end

    // NSString+Check.m

    // ics

    //

    // Created by Casystar on 15-4-2.

    // Copyright (c) 2015年 dong. All rights reserved.

    //

    #import "NSString+Check.h"

    @implementation NSString (Check)

    -(BOOL)checkPhoneNumInput{

    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9]|70|77)\\d{8}$";

    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";

    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";

    NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";

    // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];

    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];

    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

    BOOL res1 = [regextestmobile evaluateWithObject:(需要判断字符串)];

    BOOL res2 = [regextestcm evaluateWithObject:(需要判断字符串)];

    BOOL res3 = [regextestcu evaluateWithObject:(需要判断字符串)];

    BOOL res4 = [regextestct evaluateWithObject:(需要判断字符串)];

    if (res1 || res2 || res3 || res4 )

    {

    return YES;

    }

    else

    {

    return NO;

    }

    }

    @end

    ps:1(3[0-9]|5[0-35-9]|8[025-9]|70|77),后面一部分是:\\d{8}。后面一部分很简单就不解释了,前面一部分我们分析一下。前面的1表示开头必须是1,接着是小括号里的式子(3[0-9]|5[0-35-9]|8[025-9]|70|77)。小括号了有四个"|"符号,这个符号我们理解为将式子分为了五部分:3[0-9],5[0-35-9],8[025-9],70,77。接下看一下每个部分表示什么:(我们这里用x表示未知数)

    3[0-9]:就是表示匹配3x这样子的数字,x就是【0到9】之间的一个数字,包括0和9;

    5[0-35-9]:这里表示匹配5x这样子的数字,x就是【0到3】或者是【5到9】之间的一个数字;

    8[025-9]:这里表示匹配8x这样的数字,x就是【0】或者是【2】或者是【5到9】之间的一个数字;

    70:表示要匹配70;

    77:表示要匹配77;

    这五部分因为是在一个小括号中,而且使用了"|"符号来分割,也就是说,这五部分里,我们只需要匹配到其中一个部分就行了。在加上一开始要匹配的数字1,也就是我们的表倒是开头的这部分可以匹配到的数字有:130....139,150...153,155...159,180,182,185...189,170,177。

    相关文章

      网友评论

          本文标题:正则表达式判断手机号码

          本文链接:https://www.haomeiwen.com/subject/jlmkyttx.html