#pragma mark - 正则第一种表示方式-利用NSPredicate(谓词)匹配
//    NSString *email = @"15078357696@163.com";
//    NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSString *email = @"a12345aqq";
//    NSString *regex = @"^[\\u4e00-\\u9fa5]{0,}$";//仅能是中文
//    NSString *regex = @"[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";//检验是否是邮件
//    NSString *regex = @"^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$";
    NSString *regex = @"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$";//设置密码必须是小写+大写+数组8-10位,如果只需要大写,去掉(?=.*[a-z])
    /*
     
     匹配空白行的正则表达式:\n\s*\r,可以用来删除空白行
     匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
     匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
     匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7},评注:匹配形式如 0511-4405222 或 021-87888822
     匹配腾讯QQ号:[1-9][0-9]{4,},评注:腾讯QQ号从10000开始
     匹配身份证:\d{15}|\d{18} 评注:中国的身份证为15位或18位
     匹配特定数字:
     ^[1-9]\d*$    //匹配正整数
     ^-[1-9]\d*$   //匹配负整数
     ^-?[1-9]\d*$   //匹配整数
     ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
     ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
     ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
     ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
     ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
     ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
     ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
     评注:处理大量数据时有用,具体应用时注意修正
     
     英文字母:[a-zA-Z]
     匹配中文,英文字母和数字及_:
     ^[\u4e00-\u9fa5_a-zA-Z0-9]+$
     
     ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:
     ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:
     ^  与字符串开始的地方匹配
     (?!_)  不能以_开头
     (?!.*?_$)  不能以_结尾
     [a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
     $  与字符串结束的地方匹配
     
     由数字、26个英文字母或者下划线组成的字符串
     ^\w+$
     
     
     */
    
//    NSString *regex = @"";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    BOOL isValid = [predicate evaluateWithObject:email];
    NSLog(@"第一种:%zd",isValid);
    
#pragma mark - 正则第二种表示方式-利用rangeOfString:option:直接查找
    NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";
    
    NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];
    
    if (range.location != NSNotFound) {
        NSLog(@"第二种:%@", [searchText substringWithRange:range]);
    }
    
#pragma mark - 正则第三种表示方式 - 使用正则表达式类
    NSString *searchText1 = @"//ghjfdgkj,kkkkkkkk.";
    NSError *error = NULL;
    NSRegularExpression *regex1 = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
    NSTextCheckingResult *result = [regex1 firstMatchInString:searchText1 options:0 range:NSMakeRange(0, [searchText length])];
    if (result) {
        NSLog(@"第三种:%@\n", [searchText1 substringWithRange:result.range]);
    }

推荐一个学习网站:55分钟学会正则表达式

iOS 正则表达式小结的更多相关文章

  1. [转]FINDSTR正则表达式小结

    前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定 ...

  2. iOS - 正则表达式判断邮箱、身份证..是否正确:

    iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email {     NSString *emailRegex ...

  3. iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  4. iOS 正则表达式使用(转)

    1/ 教程一:认识正则表达式 .http://deerchao.net/tutorials/regex/regex.htm#mission 表7.尚未详细讨论的语法 代码/语法 说明 \a 报警字符( ...

  5. iOS 正则表达式(二) RegexKitLite使用

    下面介绍的是iOS的一个第三方库,RegexKitLite .使用起来是非常方便的,不过是2008年写的,MAC模式,我们在使用的时候,需要作两步操作. RegexKitLite 导入 我们在gith ...

  6. iOS 正则表达式(一)

    在iOS开发中,正则一直是最常用的,但也是一直记不住的,现在做一些简单的总结 我们在网上找的正则,要有'\',这个在iOS是转义符,需要'\\'这样 int main(int argc, const ...

  7. iOS正则表达式

    //包含数字和字母的密码长度6-16位 -(BOOL) validatePassword:(NSString *)password { //密码正则表达式 NSString *passwordRege ...

  8. 苹果推送(APNs)ios push小结

    把app删除后就推送不成功了,可以看出deviceToken应该是设备+app来一起识别的,重新安装后仍然为同一个 简介 推送服务APNs(Apple Push Notification servic ...

  9. IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)

    需求很简单,是从一段文本中匹配出其中的超链接.基本的做法就是用正则表达式去匹配.但是有这样一个问题. 网上大部分的识别URL的正则表达式url末尾有空格的情况下可以正确识别.比如这样的情况. 我是一段 ...

随机推荐

  1. 性能优化工具 MVC Mini Profiler

    性能优化工具 MVC Mini Profiler   MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC.WebForm 以及WCF 的性能分析的小程 ...

  2. JVM内存管理(一)

    方法区: 方法区存放了要加载的类的信息(名称.修饰符等).类的静态变量.类中定义为final类型的常量.类中的field信息.类中的方法信息.当开发人员在程序中通过Class对象的getName.is ...

  3. 微信5.4 AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8" ?> - <manifest android:versionCode ...

  4. allegro中数据库检查

    1. -------------------- ----

  5. 安装安装.net framework过程中出现的问题

    1.安装Microsoft..net framework2.0 SP2 出现 必须使用控制面板中的打开或关闭windows功能,安装或配置.net framework2.0 SP2 原因:可以打开控制 ...

  6. C#中的AssemblyInfo 程序集信息

    [VS软件版本号定义.规则和相关的Visual Studio插件](http://blog.csdn.net/cnhk1225/article/details/37500593) [assembly: ...

  7. C#中保留2位小数

    public static void Method() { double a = 1.991; a = Math.Round(a); Console.WriteLine("a = {0}&q ...

  8. Java中Scanner类

    java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序

  9. php 对象调用方法

    static union _zend_function *zend_std_get_method(zval **object_ptr, char *method_name, int method_le ...

  10. mvc源码解读(20)-controller和view之查找view

    很多时候在mvc项目中我们需要去扩展自己的视图引擎,大概看起来应该下面这个样子的: public class RazorEngineExpand : RazorViewEngine { private ...