iOS 探讨之 正则表达式

概述

随着数据的不断涌来,对其的定性搜索也变得越来越重要。如:用户名为邮箱、手机号等。

介绍

 正则表达式(正规表达式、常规表达式)(Regular Expression,简写为 regex、regexp、RE),计算机科学的一个概念。

 正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

 给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
 - 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
 - 可以通过正则表达式,从字符串中获取我们想要的特定部分

 正则表达式的特点:
- 灵活性、逻辑性和功能性非常的强
- 可以迅速的用极简单的方式达到字符串的复杂控制

 正则表达式应用对象: 文本

语法

 正则表达式由普通字符、元字符组成,普通字符包括大小写的字母和数字,元字符则有具体的含义。
\      转义字符
^     匹配输入字符串的开始
$     匹配输入字符串的结束
*      匹配前面的子表达式任意次 等价于 {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} 不符合

参考

文章目录
,