Fork me on GitHub

正则判断

.h文件

复制代码
 1 #import <Foundation/Foundation.h>  
 2   
 3 @interface Utils : NSObject  
 4 #pragma 正则匹配手机号  
 5 + (BOOL)checkTelNumber:(NSString *) telNumber;  
 6 #pragma 正则匹配用户密码6-18位数字和字母组合  
 7 + (BOOL)checkPassword:(NSString *) password;  
 8 #pragma 正则匹配用户姓名,20位的中文或英文  
 9 + (BOOL)checkUserName : (NSString *) userName;  
10 #pragma 正则匹配用户身份证号  
11 + (BOOL)checkUserIdCard: (NSString *) idCard;  
12 #pragma 正则匹员工号,12位的数字  
13 + (BOOL)checkEmployeeNumber : (NSString *) number;  
14 #pragma 正则匹配URL  
15 + (BOOL)checkURL : (NSString *) url;  
16 @end  
复制代码

.m文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  #import "Utils.h" 
    
 @implementation Utils 
 #pragma 正则匹配手机号 
 + (BOOL)checkTelNumber:(NSString *) telNumber 
 
 
mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];
 
    if (mobile.length != 11)
 
    {
 
        return NO;
 
    }else{
 
        /**
 
         * 移动号段正则表达式
 
         */
 
        NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
 
        /**
 
         * 联通号段正则表达式
 
         */
 
        NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
 
        /**
 
         * 电信号段正则表达式
 
         */
 
        NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
 
        NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
 
        BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
 
        NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
 
        BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
 
        NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
 
        BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
 
         
 
        if (isMatch1 || isMatch2 || isMatch3) {
 
            return YES;
 
        }else{
 
            return NO;
 
        }
 
    }
 
  
 
 
    
  
 #pragma 正则匹配用户密码6-18位数字和字母组合 
+ (BOOL)checkPassword:(NSString *) password 
 
     NSString *pattern = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}"
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; 
     BOOL isMatch = [pred evaluateWithObject:password]; 
     return isMatch; 
        
 
   
 #pragma 正则匹配用户姓名,20位的中文或英文 
 + (BOOL)checkUserName : (NSString *) userName 
     NSString *pattern = @"^[a-zA-Z\u4E00-\u9FA5]{1,20}"
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; 
     BOOL isMatch = [pred evaluateWithObject:userName]; 
    return isMatch; 
        
 
    
    
 #pragma 正则匹配用户身份证号15或18位 
 + (BOOL)checkUserIdCard: (NSString *) idCard 
 
     NSString *pattern = @"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)"
     NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; 
     BOOL isMatch = [pred evaluateWithObject:idCard]; 
     return isMatch; 
 
   
 #pragma 正则匹员工号,12位的数字 
 + (BOOL)checkEmployeeNumber : (NSString *) number 
 
     NSString *pattern = @"^[0-9]{12}"
        
     NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; 
     BOOL isMatch = [pred evaluateWithObject:number]; 
     return isMatch; 
       
 
   
 #pragma 正则匹配URL 
 + (BOOL)checkURL : (NSString *) url 
 
     NSString *pattern = @"^[0-9A-Za-z]{1,50}"
     NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; 
     BOOL isMatch = [pred evaluateWithObject:url]; 
     return isMatch; 
        
 
    
 @end 

 

 

判断用户密码是否规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma 正则匹配密码
+(BOOL)judgePassWordLegal:(NSString *)pass;
 
 
/**
*  判断用户输入的密码是否符合规范,符合规范的密码要求:
1. 长度6 ~ 10
2. 密码中必须同时包含数字和字母
  
 ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
 分开来注释一下:
 ^ 匹配一行的开头位置
 (?![0-9]+$) 预测该位置后面不全是数字
 (?![a-zA-Z]+$) 预测该位置后面不全是字母
 [0-9A-Za-z] {6,10} 由6-10位数字或这字母组成
 $ 匹配行结尾位置
 注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。
  
*/
+(BOOL)judgePassWordLegal:(NSString *)pass {
    BOOL result = false;
    if ([pass length] >= 6 && [pass length] <= 10){
        // 判断长度大于8位后再接着判断是否同时包含数字和字符
        NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
        result = [pred evaluateWithObject:pass];
    }
    return result;
}

 

posted @   极度恐慌_JG  阅读(290)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示