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

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 = @"\\d\\dd";
    
    //方法三: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);
}

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...