iOS 探讨之 正则表达式

概述
     随着字符数据地不断涌现,业务对这方面的要求随之而来,对其定性搜索也变得越来越重要。如:用户名为邮箱、手机号格式等。
     本文只是初步探讨 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.  百度百科
2.  iOS开发之详解正则表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值