基本字符 (单个字符)
类别 | 符号 |
---|
大写字母 | 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)
}
}
原文链接
https://www.jianshu.com/p/a580bf0aece4