一、简单的正则规则

1.由数字、26个英文字母或者下划线组成的字符串:

^[-9a-zA-Z_]{,}$  

2.非负整数(正整数 + 0 ):

^/d+$  

3. 正整数:

 ^[-]*[-][-]*$  

4.非正整数(负整数 + 0):

^((-/d+)|(+))$  

5. 负整数 :

^-[-]*[-][-]*$  

6.整数:

^-?/d+$  

7.非负浮点数(正浮点数 + 0):

^/d+(/./d+)?$  

8.正浮点数 :

^(([-]+/.[-]*[-][-]*)|([-]*[-][-]*/.[-]+)|([-]*[-][-]*))$ 

9. 非正浮点数(负浮点数 + 0):

^((-/d+(/./d+)?)|(+(/.+)?))$ 

10.负浮点数 :

^(-(([-]+/.[-]*[-][-]*)|([-]*[-][-]*/.[-]+)|([-]*[-][-]*)))$ 

11. 浮点数 :

^(-?/d+)(/./d+)?$  

12.由26个英文字母组成的字符串 :

^[A-Za-z]+$  

13. 由26个英文字母的大写组成的字符串 :

^[A-Z]+$  

14.由26个英文字母的小写组成的字符串 :

  ^[a-z]+$  

15. 由数字和26个英文字母组成的字符串 :

^[A-Za-z0-]+$  

16.由数字、26个英文字母或者下划线组成的字符串 :

^/w+$  

17.email地址 :

^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$  

18.url:

 ^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$  

19. 年-月-日:

/^(d{}|d{})-((([-]{}))|([|]))-(([-]([-]{}))|([|]))$/  

20.月/日/年:

 /^((([-]{}))|([|]))/(([-]([-]{}))|([|]))/(d{}|d{})$/  

21.Emil:

 ^([w-.]+)@(([[-]{,}.[-]{,}.[-]{,}.)|(([w-]+.)+))([a-zA-Z]{,}|[-]{,})(]?)$ 

22. 电话号码:

(d+-)?(d{}-?d{}|d{}-?d{}|^d{,})(-d+)?  

23.IP地址:

^(d{,}|1dd|[-]d|[-]).(d{,}|1dd|[-]d|[-]).(d{,}|1dd|[-]d|[-]).(d{,}|1dd|[-]d|[-])$ 

24. 匹配中文字符的正则表达式:

[/u4e00-/u9fa5] 

25.匹配双字节字符(包括汉字在内):

[^/x00-/xff]  

26. 匹配空行的正则表达式:

 /n[/s| ]*/r  

27.匹配HTML标记的正则表达式:

 /<(.*)>.*<///1>|<(.*) //>/ 

28.匹配首尾空格的正则表达式:

 (^/s*)|(/s*$)  

29.匹配Email地址的正则表达式:

/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*  

30. 匹配网址URL的正则表达式:

 ^[a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$  

31. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

^[a-zA-Z][a-zA-Z0-9_]{,}$  

32. 匹配国内电话号码:

(/d{}-|/d{}-)?(/d{}|/d{})?  

33.匹配腾讯QQ号:

^[-]*[-][-]*$  

34. 只能输入数字:

 ^[-]*$  

35.只能输入n位的数字:

^/d{n}$  

36.只能输入至少n位的数字:

^/d{n,}$  

37.只能输入m~n位的数字:

 ^/d{m,n}$  

38.只能输入零和非零开头的数字:

 ^(|[-][-]*)$  

39.只能输入有两位小数的正实数:

^[-]+(.[-]{})?$  

40. 只能输入有1~3位小数的正实数:

^[-]+(.[-]{,})?$  

41.只能输入非零的正整数:

 ^/+?[-][-]*$  

42. 只能输入非零的负整数:

^/-[-][-]*$  

43.只能输入长度为3的字符:

^.{}$  

44. 只能输入由26个英文字母组成的字符串:

^[A-Za-z]+$  

45.只能输入由26个大写英文字母组成的字符串:

 ^[A-Z]+$  

46. 只能输入由26个小写英文字母组成的字符串:

^[a-z]+$  

47.只能输入由数字和26个英文字母组成的字符串:

 ^[A-Za-z0-]+$  

48. 只能输入由数字和26个英文字母或者下划线组成的字符串:

 ^/w+$  

49.验证用户密码(正确格式为: 以字母开头,长度在5~17 之间,只能包含字符、数字和下划线)

^[a-zA-Z]/w{,}$  

50.验证是否包含有 ^%&',;=?$/"等字符:

 [^%&',;=?$/x22]+  

51.只能输入汉字:

^[u4e00-u9fa5]{,}$  

52、只含有汉字、数字、字母、下划线不能以下划线开头和结尾

 ^(?!_)(?!.*?_$)[a-zA-Z0-9_u4e00-u9fa5]+$  

53、只含有汉字、数字、字母、下划线,下划线位置不限

^[a-zA-Z0-9_u4e00-u9fa5]+$  

54、2~4个汉字

^[u4E00-u9FA5]{,}$  

二、列举一些简答的demo如下:

//邮箱
+ (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开头,八个 \d 数字字符
NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,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]{4,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]{2,5})(&middot;[\u4e00-\u9fa5]{2,5})*";
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
return [passWordPredicate evaluateWithObject:nickname];
}
//身份证号
+ (BOOL) validateIdentityCard: (NSString *)identityCard
{
BOOL flag;
if (identityCard.length <= ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [identityCardPredicate evaluateWithObject:identityCard];
}
//银行卡
+ (BOOL) validateBankCardNumber: (NSString *)bankCardNumber
{
BOOL flag;
if (bankCardNumber.length <= ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{15,30})";
NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [bankCardPredicate evaluateWithObject:bankCardNumber];
}
//银行卡后四位
+ (BOOL) validateBankCardLastNumber: (NSString *)bankCardNumber
{
BOOL flag;
if (bankCardNumber.length != ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{4})";
NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [bankCardPredicate evaluateWithObject:bankCardNumber];
}
//CVN
+ (BOOL) validateCVNCode: (NSString *)cvnCode
{
BOOL flag;
if (cvnCode.length <= ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{3})";
NSPredicate *cvnCodePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [cvnCodePredicate evaluateWithObject:cvnCode];
}
//month
+ (BOOL) validateMonth: (NSString *)month
{
BOOL flag;
if (!month.length == ) {
flag = NO;
return flag;
}
NSString *regex2 = @"(^(0)([0-9])$)|(^(1)([0-2])$)";
NSPredicate *monthPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [monthPredicate evaluateWithObject:month];
}
//year
+ (BOOL) validateYear: (NSString *)year
{
BOOL flag;
if (!year.length == ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^([1-3])([0-9])$";
NSPredicate *yearPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [yearPredicate evaluateWithObject:year];
}
//verifyCode
+ (BOOL) validateVerifyCode: (NSString *)verifyCode
{
BOOL flag;
if (!verifyCode.length == ) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{6})";
NSPredicate *verifyCodePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [verifyCodePredicate evaluateWithObject:verifyCode];
}

iOS: 详细的正则表达式的更多相关文章

  1. iOS:详细的正则表达式

    1.简介: 在项目中,正则的使用是很普遍的,例如登录账号和密码(手机号.邮箱等).用到的方法就是谓词对象过滤:NSPredicate. 2.什么是正则表达式: 正则表达式,又称正规表示法,是对字符串操 ...

  2. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  3. iOS中运用正则表达式

    iOS中运用正则表达式来匹配短信验证码,电话号码,邮箱等是比较常见的. 在iOS中运用正则表达式主要有三种方式: -:通过谓词下面是实例代码: - (BOOL)regularExpresionWith ...

  4. iOS开发-正则表达式3种形式

    转至:http://www.cnblogs.com/GarveyCalvin/p/4250145.html iOS开发-正则表达式的使用方法 前 言:在表单验证中,我们经常会使用到正则,因为我们需要用 ...

  5. iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字

    iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字 简述:NSString * regex_0 = @"\\d{1,}";   /*允许首位为0*/ NSString * re ...

  6. 有shi以来最详细的正则表达式入门教程

    本篇文章文字内容较多,但是要学习正则就必须耐心读下去,正则表达式是正则表达式其实并没有想像中的那么困难,但是想要熟练的掌握它,还是需要下功夫勤加练习的.这里讲一些正则表达式的语法和学习方法,大家还要多 ...

  7. iOS 手机 邮箱 正则表达式

    //iOS代码//判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex ...

  8. iOS 中的正则表达式符号

    最近重新看了一遍 iOS 的正则文档,简单翻译下文档中涉及到的符号 1.正则表达式元字符 符号 说明 \a 响铃, \u0007 \A 匹配输入的开始,只匹配第一行,也就是忽略多行选项 \b 不在[] ...

  9. CocoaPods | iOS详细使用说明

    一:介绍 在iOS开发中,经常会使用到第三方库,[CocoaPods](https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 下面就和大家 ...

随机推荐

  1. awk进阶

    整理的awk的小技巧 begin是要放在正则前面的,按照这个顺序: awk 'begin{} /.*?/ {action}end{}' file FS=':' 和 -F: 是等同的 -F 表示以 XX ...

  2. electron写俄罗斯方块游戏(Tetris)

    背景 在折腾ES6,突然想起大学时用c语言写过俄罗斯方块,本项目中主要是利用ES6的Class特性进行面向对象编程.项目采用node.js v6.2.0 + electron v1.1.0 进行桌面开 ...

  3. lr11_Run-time Settings选项介绍:

    lr11_Run-time Settings选项介绍: ●Run Logic ●Pacing ●Log 下面对每个

  4. 查看loadrunner代码行号

    运行前报错,如Syntax error on line 133 near ";"那么如何查看代码的行号呢?解决方法:看代码行号时,直接将鼠标在代码的某处单击,在窗体的最下方右侧能看 ...

  5. 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(2)

    3,动手实战Scala中的泛型 泛型泛型类和泛型方法,也就是我们实例化类或者调用方法的时候可以指定其类型,由于Scala的泛型和Java的泛型是一致的,这里不再赘述. 4,动手实战Scala中的隐式转 ...

  6. 洛谷P3812 【模板】线性基 [线性基]

    题目传送门 线性基 题目描述 给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大. 输入输出格式 输入格式: 第一行一个数n,表示元素个数 接下来一行n个数 输出格式: 仅一行 ...

  7. 洛谷P1404 平均数 [01分数规划,二分答案]

    题目传送门 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n ...

  8. 深入理解javascript作用域系列第一篇

    前面的话 javascript拥有一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量,这套规则被称为作用域.作用域貌似简单,实则复杂,由于作用域与this机制非常容易混淆,使得理解作用域的原 ...

  9. Ubuntu下修改ubuntu源,完成Redis Desktop Manager的安装

    原文地址: http://blog.csdn.net/u013410747/article/details/51706964 免费下载链接:http://pan.baidu.com/s/1cA3jWU ...

  10. FastReport.Net使用:[14]文本控件使用

    文本控件(Text)是FastReport中最常用的控件了,它可以是一行\多行文本.数据源的列.报表参数.汇总值.表达式,它还可以是以上任何元素的组合. 如何使用文本编辑器 1.双击文本框进入文本编辑 ...