刚才看见了一个不错的正则表达式的记录,想起之前在做项目的时候寻找正则表达式的尴尬,所以在此,站在”巨人”的肩膀上,做一个记录,方便以后使用

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

[\u4e00-\u9fa5]

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

[^\x00-\xff]

匹配空白行的正则表达式:

\n\s*\r

应用场景:可以用来删除空白行

匹配首尾空白字符的正则表达式:

^\s*|\s*$

应用场景:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

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

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

应用场景:表单验证

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

[a-zA-z]+://[^\s]*

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

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

应用场景:表单验证

匹配国内电话号码:

\d{3}-\d{8}|\d{4}-\d{7}

应用场景:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:

[1-9][0-9]{4,}

应用场景:腾讯QQ号从10000开始

匹配中国邮政编码:

[1-9]\d{5}(?!\d)

应用场景:中国邮政编码为6位数字

匹配身份证:

\d{15}|\d{18}

应用场景:中国的身份证为15位或18位

匹配ip地址:

\d+.\d+.\d+.\d+

应用场景:提取ip地址时有用

匹配特定数字:

^[1-9]\d*$ //匹配正整数

^-[1-9]\d*$ //匹配负整数

^-?[1-9]\d*$ //匹配整数

^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)

^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)

^[1-9]\d*.\d*|0.\d*[1-9]\d*$ //匹配正浮点数

^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ //匹配负浮点数

^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$ //匹配浮点数

^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)

^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)

应用场景:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:

^[A-Za-z]+$ //匹配由26个英文字母组成的字符串

^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串

^[a-z]+$ //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串

^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串

匹配中文:

[\u4e00-\u9fa5]

英文字母:

[a-zA-Z]

数字:

[0-9]

匹配中文,英文字母和数字及_:

“^[\u4e00-\u9fa5_a-zA-Z0-9]+$”

同时判断输入长度:

[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}
^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$

汉字、数字、字母、下划线不能以下划线开头和结尾:

^(?!)(?!.*?)[a−zA−Z0−9\u4e00−\u9fa5]+)[a-zA-Z0-9_\u4e00-\u9fa5]+

其中:
[a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线
^ 与字符串开始的地方匹配

(?!_) 不能以横杠开头
(?!.*?_$) 不能以横杠结尾

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

^[a-zA-Z0-9_\u4e00-\u9fa5]+$

匹配月份的正则表达式

^[1-9]|1[0−2]|^1[0-2]

注:个位数月份匹配方式 前面不能加 0。

^0?[1-9]|1[0−2]|^1[0-2]

注:个位数月份前可以加0或者不加。

匹配年份19或者20

^(19|20)[0-9]{2}$

代码:
实现思路: 自定义一个 NSString的延展(NSString+StringExtension),在延展中实现以下方法,哪里验证,调用该延展方法即可

//验证邮箱
+ (BOOL)isEmailAddress:(NSString*)candidate
{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:candidate];
}-(NSNumber *)asNumber;{NSString *regEx = @"^-?\\d+.?\\d?";NSPredicate * pred      = [NSPredicate predicateWithFormat:@"self MATCHES %@", regEx];BOOL isMatch            = [pred evaluateWithObject:self];if (isMatch) {return [NSNumber numberWithDouble:[self doubleValue]];}return nil;
}
//验证用户名(长度3 -- 20个汉字)
- (BOOL)isUserName
{NSString *      regex = @"(^[A-Za-z0-9]{3,20}$)";NSPredicate *   pred = [NSPredicate predicateWithFormat:@"self MATCHES %@", regex];return [pred evaluateWithObject:self];
}
//验证密码(长度 6 -- 20)
- (BOOL)isPassword
{NSString *      regex = @"(^[A-Za-z0-9]{6,20}$)";NSPredicate *   pred = [NSPredicate predicateWithFormat:@"self MATCHES %@", regex];return [pred evaluateWithObject:self];
}- (BOOL)isEmail
{NSString *      regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";NSPredicate *   pred = [NSPredicate predicateWithFormat:@"self MATCHES %@", regex];return [pred evaluateWithObject:self];
}
//验证URL
- (BOOL)isUrl
{NSString *      regex = @"http(s)?:\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- .\\/?%&=]*)?";NSPredicate *   pred = [NSPredicate predicateWithFormat:@"self MATCHES %@", regex];return [pred evaluateWithObject:self];
}
//验证手机号
- (BOOL)isTelephone
{NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"self MATCHES %@", MOBILE];NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"self MATCHES %@", CM];NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"self MATCHES %@", CU];NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"self MATCHES %@", CT];NSPredicate *regextestphs = [NSPredicate predicateWithFormat:@"self MATCHES %@", PHS];return  [regextestmobile evaluateWithObject:self]   ||[regextestphs evaluateWithObject:self]      ||[regextestct evaluateWithObject:self]       ||[regextestcu evaluateWithObject:self]       ||[regextestcm evaluateWithObject:self];
}

iOS 常用正则表达式一览表相关推荐

  1. IOS常用正则表达式

    IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...

  2. 常用正则表达式一览表

    一.校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9 ...

  3. iOS中正则表达式的基本使用方法

    一.第三方框架RegexKitLite的使用 在ios项目中可以借用第三方框架RegexKitLite来简化对正则表达式的使用,使用方法如下 1.去RegexKitLite下载类库,解压出来会有一个例 ...

  4. ios 一个正则表达式测试(只可输入中文、字母和数字)

    在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上用正则也非常爽,可是到了OC这却把我虐了一把,可 ...

  5. iOS中正则表达式封装好的第三方文件

    iOS中正则表达式封装好的第三方文件  我已经上传了资源哦~ 需要的话可以去下载哦 #import <Foundation/Foundation.h> #import "NSSt ...

  6. IOS使用正则表达式去掉html中的标签元素,获得纯文本

    IOS使用正则表达式去掉html中的标签元素,获得纯文本 content是根据网址获得的网页源码字符串 NSRegularExpression *regularExpretion=[NSRegular ...

  7. 常用正则表达式合集与工具

    any-rule 维护了一个常用正则表达式合集,并且本身是一个支持 Web/VS Code/idea/Alfred Workflow 多平台的正则表达式工具. image 安装 VS Code 应用商 ...

  8. Python正则匹配HTML,python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结...

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  9. 常用和不常用端口一览表收藏

    大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解.所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误 ...

  10. 转载:常用正则表达式大全!(例如:匹配中文、匹配html)

    常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[ ...

最新文章

  1. android:windowBackground 和 android:background 的区别
  2. 脑与神经科学3 脑神经影像上
  3. xml.etree ElementTree简介
  4. zlib.h: 没有那个文件或目录
  5. 反编译android 状态栏沉浸,教程:反编译修改实现状态栏时间居左,去除锁屏运营商...
  6. 华为Mate 40系列还有新升级:有望首发66W超级快充
  7. 阿里动物园再添新丁,小蛮驴搞定物流最后三公里!
  8. java中的变量是原子的_Java原子变量
  9. [算法模板]莫比乌斯反演
  10. 校园网免认证登录连接
  11. C与C++学习经典网站
  12. 微信小程序实现海报功能经历
  13. 计算机网络——wireshark抓包
  14. 周记一:要有一颗屹立不倒的恒心
  15. GOTC 2023全球开源技术峰会
  16. Blender 显示键盘和鼠标操作
  17. UCK商学院《当区块链遇见UCK》人物专访——张伟杰:区块链给90后带来新的机遇
  18. 我有一台云服务器,可以干什么?
  19. 知行学徒人脸识别伪造
  20. 两院院士评选“2021年中国/世界十大科技进展新闻”揭晓

热门文章

  1. 领域驱动设计落地经验
  2. Android 回声消除
  3. 如何卸载 Adobe Creative Cloud 桌面应用程序
  4. macOS SwiftUI教程之 Menu菜单组件基础使用(教程含源码)
  5. 你还因为缺“Java项目经验”找不到工作?适合应届生的20个“项目经验”送给你
  6. iphone配置实用工具出错解决
  7. 工程经济作业1答案_工程经济学1、2、3、4(作业1答案)
  8. 中标麒麟linux系统安装打印机_国产中标麒麟操作系统的打印机安装
  9. Python数据库编程之pymysql详解
  10. varchar2(数值)和varchar2(数值 char)的说明