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正则表达式工具

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

ios中常用到的正则表达式

ios中常用到的正则表达式大全,下载后只需添加两个类文件,调用类方法即可实现正则。...

IOS中用正则表达式判断输入的内容为8-16位且同时包含数字和字母

今天在项目中需要用到判断用户输入的用户名长度为8-16位且同时包含数字和字母,在网上搜了一下正则表达式的用法,然后参考这篇blog,完美解答了问题。记录一下: 密码有如下要求:由数字和字...

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

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

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

{ if (mobileNum.length != 11) { return NO; } /** * 手机号码: * 13[0-9...

iOS - 常用正则表达式

数字字符串判断, 邮箱验证, 手机号验证, 正数验证

iOS中正则表达式学习

字面字符(Literal characters)是最简单地一种正则表达式。你已经很熟悉他们了,比如,文字处理机或文本编辑器中得“find”操作。例如,单个字符的正则表达式 t 就会找到字母“t”出现的...

iOS正则表达式(三)

正则表达式快捷命令上篇文章中讲到,我们正则表达式中存在快捷命令可以简化我们的表达式。OK,接下来我们来看下这些快捷命令吧。 命令 解释 . 匹配除换行符以外的任意字符 \w 匹配...

iOS正则表达式

转自:http://blog.csdn.net/ios_long/article/details/6720650 1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用...
  • zjjzmw1
  • zjjzmw1
  • 2012年10月17日 20:36
  • 579
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 探讨之 正则表达式
举报原因:
原因补充:

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