基本字符 (单个字符)
类别 |
符号 |
大写字母 |
ABCDEF...XYZ |
小写字母 |
abcdef...xyz |
数字 |
0123456789 |
其他 |
`~!@#%&;:'",<>/ |
转义方法 |
符号 |
双反斜杠转义 『\\』 |
$^*()-=+[{]}|.? |
三反斜杠转义 『\\\\』 |
\ |
元字符 (单类字符)
符号 |
类别 |
. |
除换行符外的任意字符 |
\\w |
字母、数字、下划线或汉字 |
\\s |
任意空白字符,包括换页符、换行符、回车符、制表符、空格 |
\\d |
数字 |
\\f |
换页符 |
\\n |
换行符 |
\\r |
回车符 |
\\t |
制表符 |
\\v |
垂直制表符 |
反义(元字)符
符号 |
类别 |
\\W |
非字母、数字、下划线或汉字 |
\\S |
非空白字符 |
\\D |
非数字字符 |
^ |
非后接的字符,可同时接多个字符 |
限定字符
贪婪限定字符
- 当匹配符合多种情况时优先字符数多的情况
字符串 :"123456789"
正 则 :"^\d+"
结 果 :123456789
符号 |
意义 |
* |
重复单字符或表达式零次以上(包括零次) |
+ |
重复单字符或表达式一次以上(包括一次) |
? |
重复单字符或表达式零或一次 |
{n} |
重复单字符或表达式n次 |
{n,} |
重复单字符或表达式n次以上(包括n次) |
{n,m} |
重复单字符或表达式n到m次 |
懒惰限定符
- 当匹配符合多种情况时优先字符数少的情况
字符串 :"123456789"
正 则 :"^\d+?"
结 果 :1
符号 |
意义 |
*? |
重复单字符或表达式零次以上(包括零次) |
+? |
重复单字符或表达式一次以上(包括一次) |
?? |
重复单字符或表达式零或一次 |
{n,}? |
重复单字符或表达式n次以上(包括n次) |
{n,m}? |
重复单字符或表达式n到m次 |
定位符
符号 |
意义 |
^ |
字符串的开始 |
$ |
字符串的结束 |
\\b |
单词开始或结束 |
\\B |
非单词开头或结束的字符 |
连接符
符号 |
意义 |
| |
用于连接两个字符或表达式,可理解为『或』 |
, |
用于连接两个字符,可理解为『或』 |
- |
用于选取一个字符域 |
分隔符
符号 |
意义 |
[] |
单字符分隔符 :对单字符进行分隔 |
() |
表达式分隔符 :对表达式进行分隔 |
{} |
限定符分隔符 :对限定符进行分隔 |
正则实例
^ |
[a-z,A-Z,0-9]|{2,6} |
$ |
首 |
2到6位字母或数字 |
尾 |
- 首字符为字母其余为字母或数字组成的6位及以上字符串
^ |
[a-z,A-Z]{1} |
[a-z,A-Z,\\d]|{5,} |
$ |
首 |
1位字母 |
5位及以上字母或数字 |
尾 |
^ |
[A-Z,a-z,\\d]+ |
([-_.][A-Za-z\\d]+)* |
@ |
([A-Za-z\\d]+[-.])+ |
[A-Za-z\\d]{2,4} |
$ |
首 |
0位以上数字或字母 |
0次以上(-_.+0位以上数字或字母) |
@ |
0次以上(0次以上数字或字母 + -.) |
2到4位数字或字母 |
尾 |
代码书写
/// 帐号
var acount = "339662012@qq.com"
/// 正则规则字符串
let pattern = "^[A-Z,a-z,\\d]+([-_.][A-Z,a-z,\\d]+)*@([A-Z,a-z,\\d]+[-.])+[A-Z,a-z,\\d]{2,4}"
/// 正则规则
let regex = try? NSRegularExpression(pattern: pattern, options: [])
/// 进行正则匹配
if let results = regex?.matches(in: acount, options: [], range: NSRange(location: 0, length: acount.count)), results.count != 0 {
print("帐号匹配成功")
for result in results{
let string = (acount as NSString).substring(with: result.range)
print("对应帐号:",string)
}
}