美文网首页SwiftBlogSwift学习Swift编程
【实践】使用自定义操作符处理正则表达式

【实践】使用自定义操作符处理正则表达式

作者: SmartisanBool | 来源:发表于2017-03-27 12:43 被阅读20次

swift目前还没有在语言层面上支持正则表达式,但不排除使用正则表达式的可能,所以本篇学习如果通过自定义操作符并结合枚举来封装一个处理正则表达式的工具。

1.创建RegexHelper结构体:

struct RegexHelper {
    let regex: NSRegularExpression

    init(_ pattern: String) throws {
        try regex = NSRegularExpression(pattern:pattern,options: .caseInsensitive)
    }

    func match(_ input: String) -> Bool {
        let matches = regex.matchesInString(input,options: [],range: NSMakeRange(0, input.utf16.count))
            return matches.count > 0
        }
}

2.创建操作符=~:

precedencegroup MatchPrecedence {
    associativity: none
    higherThan: DefaultPrecedence
}
    
infix operator =~: MatchPrecedence
    
func =~(lhs: String, rhs: RegularPattern) -> Bool {
    do {
        return try RegexHelper(rhs.rawValue).match(lhs)
    } catch _ {
        return false
    }
}

3.创建正则表达式枚举:

//MARK: 定义表达式枚举
public enum RegularPattern: String {
    //邮箱
    case eMail = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"
    //手机号
    case Mobile = "^1[3|4|5|7|8][0-9]\\d{8}$"
    //身份证号
    case IDNum = "\\d{14}[[0-9],0-9xX]"
}

4.测试使用:

if  "18811880000" =~ RegularPattern.Mobile{
       print("这是一个有效的手机号")
}

相关文章

  • 【实践】使用自定义操作符处理正则表达式

    swift目前还没有在语言层面上支持正则表达式,但不排除使用正则表达式的可能,所以本篇学习如果通过自定义操作符并结...

  • 【C++】C++学习笔记之六:操作符重载

    1. 操作符重载的意义 对于C++内置的数据类型,可以简单明了地使用操作符对数据进行处理,如: 而对于用户自定义的...

  • RxJava学习笔记之Single

    特点: 使用说明: 操作符: 操作符返回值说明composeSingle创建一个自定义的操作符concat and...

  • Swift自定义操作符

    正则表达式是我们经常要用到的方法,今天我们通过一种简单的自定义操作符来重新认识下正则表达式的最优写法: prece...

  • zip操作符的error处理

    熟悉rxjava的同学肯定对操作符不会陌生,比如我们使用map操作符处理数据,使用zip操作符合并多个请求,这里演...

  • Swift教程之基本操作符

    基本操作符 本章介绍Swift中的常见操作符,并介绍使用自定义操作符实现复杂运算。 术语 操作符包括一元、二元和三...

  • mysql(04day)

    Mysql支持正则表达式的匹配,Mysql中使用REGEXP操作符来进行正则表达式匹配。 下面中的正则模式中可用于...

  • Perl正则表达式常用语法总结

    操作符 m/.../ 模式匹配操作符 s/.../.../ 模式替换操作符 qr/.../ 预编译正则表达式 =~...

  • Mongodb数据库的模糊搜索

    模糊查询简介 MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex操作符...

  • re模块入门

    正则表达式常用操作符 正则表达式语法实例 经典正则表达式实例

网友评论

    本文标题:【实践】使用自定义操作符处理正则表达式

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