加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

55分钟学会正则表达式(译)

发布时间:2020-12-14 00:57:46 所属栏目:百科 来源:网络整理
导读:http://doslin.com/regular%20expressions/2014/03/11/learn-regular-expressions-in-about-55-minutes.html - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //[self checkNumber:@"a55b

http://doslin.com/regular%20expressions/2014/03/11/learn-regular-expressions-in-about-55-minutes.html


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //[self checkNumber:@"a55b2c9"];
    //[self checkChar:@"a55b2c9"];
//    [self checkPassword:@"a55b2c9"];
//    [self checkPassword:@"Q55b2c9"];
//    [self checkPassword:@"5b2cF9"];
    NSLog(@"rs:%@",[self regularPattern:@"5b2Cf9" pattern:@"([a-z]+)&([A-Z]+)&([0-9]+)"]?@"YES":@"NO");
    return YES;
}

//字母、数字
//至少包含一个大写字母、一个小写
//长度为6-8
- (void)checkPassword:(NSString *)networkKey
{
    BOOL result = ([self regularPattern:networkKey pattern:@"[a-zA-Z0-9]{6,8}"]&&
                   [self regularPattern:networkKey pattern:@"[A-Z]{1}"]&&
                   [self regularPattern:networkKey pattern:@"[a-z]{1}"]&&
                   [self regularPattern:networkKey pattern:@"[0-9]{1}"]
                  );
    NSLog(@"rs:%@",result?@"YES":@"NO");
}

- (BOOL) regularPattern:(NSString *)content pattern:(NSString *)pattern
{
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    NSArray *result = [regex matchesInString:content options:NSMatchingReportProgress range:NSMakeRange(0,[content length])];
    return [result count]>0?YES:NO;
}

//统计两个连续的数字
- (void)check1:(NSString *)str
{
    //[] 只会查找内部的某一个字符而已
    //统计两个连续的数字
    //方法一:
    //NSString *pattern = @"[0-9][0-9]";
    
    //方法二:d:代表数字, 表示转义
    //NSString *pattern = @"ddd";
    
    //方法三:d:代表数字, 表示转义
    NSString *pattern = @"d{2}";//@"d{2}a{2}":代表连续三个数字两个a
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,[str length])];
    NSLog(@"%zd",result.count);
}

//编计数字
- (void)checkNumber:(NSString *)str
{
    //[] 只会查找内部的某一个字符而已
    //以下两种写法都可,前一个是简写
    //NSString *pattern = @"[0-9]";
    NSString *pattern = @"[0123456789]";
     //1,创建正则表达式
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//编计字母
- (void)checkChar:(NSString *)str
{
    //[] 只会查找内部的某一个字符而已
    NSString *pattern = @"[a-zA-Z]";
    //1,result.count);
}

//数字的个数必须是2-4
- (void)check2:(NSString *)str
{
    NSString *pattern = @"d{2,4}";//@"34561" :只会返回1 因为正则表达的匹配比较贪婪,按最长的算
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

// ?  表示0个或1个
// +  表示至少一个
// *  表示0个或多个
// ^  以什么开头,如  @"^d"  表示以数字开头
// $  以什么结尾  如 @"d$"  表示以数字结尾
// .  表示任意东西
- (void)check3:(NSString *)str
{
    NSString *pattern = @"d?";
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//以数字开头
- (void)check4:(NSString *)str
{
    NSString *pattern = @"^d{3}";//必须以3个数字开头
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//以数字开头和结尾
- (void)check5:(NSString *)str
{
    NSString *pattern = @"^d[a-zA-Z0-9]*d$";//必须以数字开头和结尾,中间可以是0个或多个字符
    //NSString *pattern = @"^d.d$";//必须以数字开头和结尾,中间只能是1个任意的字符
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//验证QQ:
//不能以0开头
//全部是数字
//5-11个数字
- (void)check6:(NSString *)str
{
    NSString *pattern = @"^[1-9]d{4,10}$";
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//验证手机:
//全部是数字
//11个数字
//以 13,15,17,18开头
- (void)check7:(NSString *)str
{
    NSString *pattern = @"^[1][3578]d{9}$";//11-2=9
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

//判断ip
//中间三个.
//1-3个数字
- (void)check8:(NSString *)str
{
    //以什么开头,什么结尾 : @"^$"
    //@"^d{1,3}.d{1,3}$"   特殊字符必须转义,如:.,需要表示成:.
    NSString *pattern = @"^$";//
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}
//JavaScript 的正则表达式:以 /中间的正则/ ,如果需要修改成oc,只需要将去掉首尾即可

//以字母开头
- (void)check9:(NSString *)str
{
    NSString *pattern = @"^[A-Z|a-z]{1}[a-zA-Z0-9]*";
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,[str length])];
    NSLog(@"%@ %zd",str,result.count);
}

//判断以中文中文开头:u4e00-u9fa5
- (void)check10:(NSString *)str
{
    NSString *pattern = @"[u4e00-u9fa5]";
    NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:pattern options:nil error:nil];
    NSArray *result = [regex matchesInString:str options:nil range:NSMakeRange(0,result.count);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读