iOS: 详细的正则表达式
一、简单的正则规则
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})(·[\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: 详细的正则表达式的更多相关文章
- iOS:详细的正则表达式
1.简介: 在项目中,正则的使用是很普遍的,例如登录账号和密码(手机号.邮箱等).用到的方法就是谓词对象过滤:NSPredicate. 2.什么是正则表达式: 正则表达式,又称正规表示法,是对字符串操 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- iOS中运用正则表达式
iOS中运用正则表达式来匹配短信验证码,电话号码,邮箱等是比较常见的. 在iOS中运用正则表达式主要有三种方式: -:通过谓词下面是实例代码: - (BOOL)regularExpresionWith ...
- iOS开发-正则表达式3种形式
转至:http://www.cnblogs.com/GarveyCalvin/p/4250145.html iOS开发-正则表达式的使用方法 前 言:在表单验证中,我们经常会使用到正则,因为我们需要用 ...
- iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字
iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字 简述:NSString * regex_0 = @"\\d{1,}"; /*允许首位为0*/ NSString * re ...
- 有shi以来最详细的正则表达式入门教程
本篇文章文字内容较多,但是要学习正则就必须耐心读下去,正则表达式是正则表达式其实并没有想像中的那么困难,但是想要熟练的掌握它,还是需要下功夫勤加练习的.这里讲一些正则表达式的语法和学习方法,大家还要多 ...
- iOS 手机 邮箱 正则表达式
//iOS代码//判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex ...
- iOS 中的正则表达式符号
最近重新看了一遍 iOS 的正则文档,简单翻译下文档中涉及到的符号 1.正则表达式元字符 符号 说明 \a 响铃, \u0007 \A 匹配输入的开始,只匹配第一行,也就是忽略多行选项 \b 不在[] ...
- CocoaPods | iOS详细使用说明
一:介绍 在iOS开发中,经常会使用到第三方库,[CocoaPods](https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 下面就和大家 ...
随机推荐
- awk进阶
整理的awk的小技巧 begin是要放在正则前面的,按照这个顺序: awk 'begin{} /.*?/ {action}end{}' file FS=':' 和 -F: 是等同的 -F 表示以 XX ...
- electron写俄罗斯方块游戏(Tetris)
背景 在折腾ES6,突然想起大学时用c语言写过俄罗斯方块,本项目中主要是利用ES6的Class特性进行面向对象编程.项目采用node.js v6.2.0 + electron v1.1.0 进行桌面开 ...
- lr11_Run-time Settings选项介绍:
lr11_Run-time Settings选项介绍: ●Run Logic ●Pacing ●Log 下面对每个
- 查看loadrunner代码行号
运行前报错,如Syntax error on line 133 near ";"那么如何查看代码的行号呢?解决方法:看代码行号时,直接将鼠标在代码的某处单击,在窗体的最下方右侧能看 ...
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(2)
3,动手实战Scala中的泛型 泛型泛型类和泛型方法,也就是我们实例化类或者调用方法的时候可以指定其类型,由于Scala的泛型和Java的泛型是一致的,这里不再赘述. 4,动手实战Scala中的隐式转 ...
- 洛谷P3812 【模板】线性基 [线性基]
题目传送门 线性基 题目描述 给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大. 输入输出格式 输入格式: 第一行一个数n,表示元素个数 接下来一行n个数 输出格式: 仅一行 ...
- 洛谷P1404 平均数 [01分数规划,二分答案]
题目传送门 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n ...
- 深入理解javascript作用域系列第一篇
前面的话 javascript拥有一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量,这套规则被称为作用域.作用域貌似简单,实则复杂,由于作用域与this机制非常容易混淆,使得理解作用域的原 ...
- Ubuntu下修改ubuntu源,完成Redis Desktop Manager的安装
原文地址: http://blog.csdn.net/u013410747/article/details/51706964 免费下载链接:http://pan.baidu.com/s/1cA3jWU ...
- FastReport.Net使用:[14]文本控件使用
文本控件(Text)是FastReport中最常用的控件了,它可以是一行\多行文本.数据源的列.报表参数.汇总值.表达式,它还可以是以上任何元素的组合. 如何使用文本编辑器 1.双击文本框进入文本编辑 ...