美文网首页iOS程序猿
swift中常用的正则表达式

swift中常用的正则表达式

作者: 查理布朗Bio | 来源:发表于2018-08-06 18:05 被阅读65次

    基本字符 (单个字符)

    • 不需要转义的字符
    类别 符号
    大写字母 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 = "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)
        }
    }
    

    相关文章

      网友评论

        本文标题:swift中常用的正则表达式

        本文链接:https://www.haomeiwen.com/subject/rkigvftx.html