一、简单的正则规则

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. Templated Helper Methods

    1.Model 2.HomeController 3.CreatePerson.cshtml 禁用了客户端验证 4.Using Templated Helper Methods Editor 和 Ed ...

  2. Java Hibernate和.Net EntityFramework 如何在提交事务之前 就拿到需要新增实体的Id

    在Hibernate中很容易做到这一点,因为hibernate在事务commit之前  还有一个save方法,这个save方法就可以持久化并且拿到Id. 但是EF并不可以呀,EF是将对象标记为新增状态 ...

  3. 14:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密

    首先简单解释一下)) //要使用updateStateByKey方法,必须设置Checkpoint. ssc.checkpoint("/checkpoint/") val sock ...

  4. 洛谷P2286 [HNOI2004]宠物收养所 [STL,平衡树]

    题目传送门 宠物收养所 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...

  5. Python上下文管理器(context manager)

    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语 ...

  6. Django实现单用户登录

    最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了.今天由于工作需求,需要用Django实现单用户登录.大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数 ...

  7. openwrt 控制gpio口的方法

    利用i2c来控制gpio口 1.编译驱动或者安装驱动 # opkg update # opkg install kmod-i2c-gpio-custom kmod-i2c-core# 加载驱动 # i ...

  8. java泛型理解。代码更明了。

    泛型数据java基础,但真正理解需要悉心品尝.毕竟在工作中用到的是在是太多了. 不要以为new ArrayList<>这就是泛型,这只能属于会使用. 在工作中,相对于现有的项目源码的数据库 ...

  9. mycat数据库中间件入门

    首先从官网上下载mycat. 官网链接 下载对应的mycat即可. 我也是小白一个,就是直接在window上操作了. 自己画的,真low. 推荐一篇文章 https://blog.csdn.net/u ...

  10. hdu 1158 dp Employment Planning

    Employment Planning Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...