swift中常用的正则表达式

基本字符 (单个字符)

  • 不需要转义的字符
类别 符号
大写字母 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 非单词开头或结束的字符

连接符

符号 意义
| 用于连接两个字符或表达式,可理解为『或』
, 用于连接两个字符,可理解为『或』
- 用于选取一个字符域

分隔符

  • 对单个字符或表达式等进行分隔
符号 意义
[] 单字符分隔符 :对单字符进行分隔
() 表达式分隔符 :对表达式进行分隔
{} 限定符分隔符 :对限定符进行分隔

正则实例

  • 2到6位字母或数字组成的字符串
^ [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 = "[email protected]"
/// 正则规则字符串
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)
    }
}

你可能感兴趣的:(swift中常用的正则表达式)