正则表达式笔记

每天的一小步,知道我在不断进步,这就是我每天的小目标。 
这是我的第一篇博客,在工作之余,我会努力地留下些许脚印。 
我是一名iOS开发者,对于iOS我仅仅只是一个菜鸟,愿意在此处留下我的经验来帮助更多的朋友一起学习,有任何疑问,都欢迎指点和批评。

这是一个正则表达式基础篇,并提供了目前比较常用的一些正则表达式格式。 1.什么是正则表达式

正则表达式提供了一种在指定模式中搜索匹配的模式,这种模式匹配能让你做更有用的事,如验证字段,电话号码,邮箱地址,检查用户输入,执行更高级的文本操作等等。

2.个人学习笔记

1.行定位符:以”^”表示行的开始,“$”表示行的结尾
2.单词定界符(\b.\B) \btm\b 匹配包含tm的单词
3.字符类[ ]:匹配tm不区分大小写:[Tt][Mm]
4.选择字符|:T|tM|m 以T或t开头,接一个字母M或m
5.连字符-:[a-zA-Z] 匹配一个字母
6.排除字符 [^]: [^a-zA-Z] 匹配除了字母和下划线
7.限定符 ?: 匹配前面的字符0次或1次。colou?r 可以匹配colour和color
+:匹配前面的字符一次或多次。go+gle 可以匹配gogle。。。goo...gle
*:匹配前面的字符0次或多次。
{n}: 匹配前面的字符n次 go{2}gle 匹配google
{n,}:匹配前面的字符最少n次
{n,m}:匹配前面的字符最少n次,最多m次
8.点号字符(.):匹配一个单词,第一个字母为r,第三个字符为s,最后一个字母为t。
^r.s.*t$
9.转义字符(\): [0-9]{1,3}(\.[0-9]{1,3}){3}
10.反斜线 \d:任意一个十进制数字,相当于[0-9]
\D:任意一个非十进制数字
\s:任意一个空白字符(\f\n\r\t)
\w:任意一个单词字符,相当于[a-zA-Z0-9_]

3.附上常用的iOS使用的正则表达式代码

//邮箱验证 
+ (BOOL)validateEmail:(NSString *)email 
{ 
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
return [emailTest evaluateWithObject:email]; 
} 
//手机号码验证 
+ (BOOL)validateMobile:(NSString *)mobile 
{ 
//手机号以13, 15,18,17开头,八个 \d 数字字符 
NSString *phoneRegex = @"^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$"; 
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; 
return [phoneTest evaluateWithObject:mobile]; 
}

//车牌号验证 
+ (BOOL)validateCarNo:(NSString *)carNo 
{ 
NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex]; 
NSLog(@"carTest is %@",carTest); 
return [carTest evaluateWithObject:carNo]; 
}

//车型 
+ (BOOL)validateCarType:(NSString *)CarType 
{ 
NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex]; 
return [carTest evaluateWithObject:CarType]; 
}

//用户名 
+ (BOOL)validateUserName:(NSString *)name 
{ 
NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$"; 
NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex]; 
BOOL B = [userNamePredicate evaluateWithObject:name]; 
return B; 
}

//密码 
+ (BOOL) validatePassword:(NSString *)passWord 
{ 
NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex]; 
return [passWordPredicate evaluateWithObject:passWord]; 
}

//昵称 
+ (BOOL) validateNickname:(NSString *)nickname 
{ 
NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex]; 
return [passWordPredicate evaluateWithObject:nickname]; 
}

//身份证号 
+ (BOOL) validateIdentityCard: (NSString *)identityCard 
{ 
BOOL flag; 
if (identityCard.length <= 0) { 
flag = NO; 
return flag; 
} 
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; 
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2]; 
return [identityCardPredicate evaluateWithObject:identityCard]; 
}

4.参考链接

正则表达式升级篇

iOS开发正则表达式的学习的更多相关文章

  1. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  2. IOS开发-UI学习-sqlite数据库的操作

    IOS开发-UI学习-sqlite数据库的操作 sqlite是一个轻量级的数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了,而且它的处理速度比Mysql.PostgreSQL这 ...

  3. IOS开发-UI学习-delegate(代理)的使用,键盘消失

    代理是IOS开发中用到的一种设计模式.今天做了一个代理的小练习: 以下项目实现了两个页面之间的相互切换,并且在切换页面的时候完成了从一个页面往另一个页面的传值.从主页面往其他页面传值是容易的,但是反过 ...

  4. IOS开发-OC学习-MD5加密

    MD5的全称是Message-Digest Algorithm 5. MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数.数据 ...

  5. iOS开发--正则表达式

    目录[-] 正则表达式简单语法总结 一.什么是正则表达式 二.正则表达式的基础语法 1.字面值 2.特殊字符(元字符) (1)句号 (2)字符类([]) (3)区间符号(-) (4)取反符号(^) ( ...

  6. IOS开发——正则表达式验证手机号、密码

    App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...

  7. 【iOS开发-33】学习手动内存管理临时抛弃ARC以及retain/assign知识——iOSproject师面试必考内容

    我们为什么须要内存管理?当使用内存达到40M和45M时候会发出警告,假设不处理,占用内存达到120M时直接强制关闭程序. 所以出现闪退除了是程序出现逻辑错误,还有可能是内存使用过大. (1)创建一个对 ...

  8. IOS开发-UI学习-UINavigationController(导航控制器)的使用

    UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" ...

  9. IOS开发-UI学习-UIFont,字体设置及批量创建控件

    在IOS 中,使用[UIFont familyNames]这个方法获取72种系统字体. 使用[UIFont fontWithName:@"Zapfino" size:18]这个方法 ...

随机推荐

  1. HTML5本地缓存localStorage和sessionStorage的操作方法收集

    说明: Web Storage 包含如下两种机制: sessionStorage 为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开 ...

  2. SecureCRT的一些问题解决

    按下退格键发送删除命令 设置缓冲 拷贝与粘贴 多标签切换   ctrl + tab . 如果同时按下shift,可以方向切换

  3. t-sql 笔记(2)

    1.用标点符号分隔的字符串,转换成表 -- SELECT * FROM dbo.split('581:579:519:279:406:361:560',':') ), )) )) AS BEGIN D ...

  4. easyui 只刷新当前页面的数据 datagrid reload 方法

    $('#refreshbtn').click(function() { $("#t_auclot").datagrid("reload",serializeFo ...

  5. [Linux]nginx tomcat做负载均衡

    之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学须要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的port启动. ...

  6. ES6/ES2015核心内容(上)

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015.也就是说,ES6就是ES2015. ...

  7. java 把json对象中转成map键值对

    相关:Json对象与Json字符串的转化.JSON字符串与Java对象的转换 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据 比如json数据如下: {responseHeade ...

  8. scrapy-splash抓取动态数据例子十三

    一.介绍 本例子用scrapy-splash通过搜狗搜索引擎,输入给定关键字抓取微信资讯信息. 给定关键字:数字:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 ...

  9. angular 学习理解笔记

    原文:https://github.com/eoinkelly/notes/blob/master/angular/book-building-web-apps-w-angular/angular.m ...

  10. Netty源码细节-accept、read(Linux os层 + Netty层代码细节)(转)

    原文:http://budairenqin.iteye.com/blog/2215899 这篇分析一下accept的细节, 我觉得网络IO相关开发很多时候不能仅仅局限于java层, 尤其从accept ...