iOS 探讨之 正则表达式

原创 2016年05月30日 16:20:03
概述
     随着字符数据地不断涌现,业务对这方面的要求随之而来,对其定性搜索也变得越来越重要。如:用户名为邮箱、手机号格式等。
     本文只是初步探讨 Objective-C语言中的正则表达式,Swift尚未验证,后续验证包括拓展将在下一章节介绍。

介绍
     正则表达式(又名正规表达式、常规表达式)(Regular Expression,简写为 regex、regexp、RE),是计算机科学中的一个概念。
     正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
     正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
     给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分
     正则表达式的特点:
  1. 灵活性、逻辑性和功能性非常的强
  2. 可以迅速的用极简单的方式达到字符串的复杂控制
     正则表达式应用对象: 文本


语法
     正则表达式由普通字符、元字符组成,普通字符包括大小写的字母和数字,元字符则有具体的含义。下面介绍一下常用的元字符:

\     转义字符
^     匹配输入字符串的开始
$     匹配输入字符串的结束
*     匹配前面的子表达式任意次 等价于 {0,}
+     匹配前面的子表达式至少一次 等价于 {1,}
?     匹配前面的子表达式至多一次 等价于 {0,1}
{n}     n是一个非负数,匹配确定的n次
{n,}     n是一个非负数,至少匹配n次
{n,m}     n、m均为非负数,其中n<m,至少匹配n次且至多匹配m次
?     当该字符紧跟在任何一个其他限制符(*、+、?、{n}、{n,}、{n,m}) 后面时,匹配是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
.     匹配除”\r\n”之外的任何单个字符。
x|y     匹配x或y
[xyz]  字符集合,匹配所包含的任意一个字符
[^xyz] 负值字符集合。匹配未包含的任意字符。
[a-z]    字符集合。匹配所包含的任意一个字符。
[^a-z]     负值字符集合。匹配任何不在指定范围内的任意字符。
\b     匹配一个单词边界,也就是指单词和空格间的位置。(即正则表达式的匹配有两种概念1. 匹配字符 2. 匹配位置)
\B     匹配非单词边界。
\d     匹配一个数字字符。[0-9]
\D     匹配一个非数字字符。[^0-9]
\w     匹配包括下划线的任何单词字符。
\W    匹配任何非单词字符。
\s     匹配任何不可见字符。
\S     匹配任何可见字符。
()     将(和)之间的表达式定义为组(Group),并且将匹配这个表达式的字符保存到一个临时区域

示例

测试用例
正则表达式
测试结果
AAAA
a
不符合
AAAA
A
符合
ABC
^B
不符合
ABC
^A
符合
ABC
ABC|ABD
符合
ABC
ABE|CBD
不符合
,
[C,D]
符合
E
[C,D]
不符合
-
[-CD]
符合
-
[C-D]
不符合
123D
\\d
符合
123
\\D
不符合
yanglei3kyou@126.com
[a-zA-Z0-9_.%+-]+@[a-zA-Z0-9_.%+-]+\\.[a-zA-Z0-9_.%+-]{2,4}
符合
yanglei3kyou@126.com1
[a-zA-Z0-9_.%+-]+@[a-zA-Z0-9_.%+-]+\\.[a-zA-Z0-9_.%+-]{2,4}
不符合


参考
1. 百度百科
     http://baike.baidu.com/link?url=C90c39HexoWCCCaqGurjRRA41pNllYCcfNvkcM7-YQsbidc20aamHPDhH0vLflbcItZhg0Dw0nr788m_mX9BK_
2.  iOS开发之详解正则表达式
http://www.cocoachina.com/ios/20150415/11568.html

iOS最新手机号码正则表达式

旧的正则表达式代码: - (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134[0-8],135...
  • XLawsZero
  • XLawsZero
  • 2016年07月28日 10:57
  • 8899

iOS开发------常用正则表达式语法以及常用正则

博文转自:zhaojinqiang12的博客-iOS中的正则表达式运用,更加详细的内容请关注以上博文Thanks()什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达...
  • RunIntoLove
  • RunIntoLove
  • 2016年05月19日 18:35
  • 1595

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

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

iOS原生正则表达式以及NSArray快捷过滤

  • 2013年06月07日 14:07
  • 147KB
  • 下载

iOS正则表达式工具

  • 2016年06月24日 10:34
  • 40KB
  • 下载

XZ_iOS之正则表达式和简单的图文混排

正则表达式 有关正则表达式的参考文档链接 http://deerchao.net/tutorials/regex/regex.htm 正则表达式不是 OC 特有的,几乎所有的语言/IDE,都支...
  • understand_XZ
  • understand_XZ
  • 2018年01月10日 14:19
  • 233

IOS 常用正则表达式整理(邮箱、身份证号、固化、手机号、纯数字、纯文字等)

对手机号、邮箱、固话、身份证号进行校验
  • u011154007
  • u011154007
  • 2016年10月24日 21:18
  • 229

iOS正则表达式-验证密码身份证手机号

ios项目中常用的正则表达式及其用法献上,可以直接使用!
  • yangbingbinga
  • yangbingbinga
  • 2015年02月07日 15:47
  • 6182

ios中常用到的正则表达式

ios中常用到的正则表达式大全,下载后只需添加两个类文件,调用类方法即可实现正则。...
  • jiadabin
  • jiadabin
  • 2016年04月20日 16:55
  • 1632

iOS/Android 开发中常用的正则表达式

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:...
  • whjay520
  • whjay520
  • 2017年01月06日 16:18
  • 224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 探讨之 正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)