正则表达式笔记

每天的一小步,知道我在不断进步,这就是我每天的小目标。 
这是我的第一篇博客,在工作之余,我会努力地留下些许脚印。 
我是一名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. Problem D: 零起点学算法24——判断奇偶数

    #include<stdio.h> int main() { int a; while(scanf("%d",&a)!=EOF) ==) printf(&quo ...

  2. ThinkPHP模板中JS等带花括号处会被解析错误的解决办法

    如下图,当本人在ThinkPHP框架的模板中写jQuery代码的时候,写了一些注释,并且注重是斜线和换括号{是连着一起的,这层语法上来时是没问题的,但是在ThinkPHP 的模板引擎解析下,会被解析掉 ...

  3. Ext js 应用例子

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. Restful Web Service部署到weblogic 12c

    介绍一下环境: 首先需要下载一个jaxrs-ri-2.22.2.zip的包 采用Jdeveloper 12c版本,jdk1.8 WebLogic Server 12.2.1版本 Restful项目建立 ...

  5. 转:java 进阶之路

    转: https://www.zhihu.com/question/39139518 一.基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:// ...

  6. Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)

    转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处 ...

  7. [Functional Programming Monad] Map And Evaluate State With A Stateful Monad

    We explore our first stateful transaction, by devising a means to echo our state value into the resu ...

  8. jquery怎样获得父级窗体的大小

    方法例如以下: $(window.parent.window).width() 注意: window能够省略.如:$(parent).width(),parent能够有多级,比方:$(parent.p ...

  9. java动态载入指定的类或者jar包反射调用其方法

    序言 有时候.项目中会用到java动态载入指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大减少,更加的模块化.代码利用率更高.模式中的代理模式就用到java的这一机制. 下 ...

  10. vue - path

    //path用来处理路径问题的. 1 const from = path.join(_dirname, './appes6/js'); => d:/Users/xxchi/Desktop/ES6 ...