美文网首页
Swift自定义操作符

Swift自定义操作符

作者: iOS_我更专业 | 来源:发表于2021-07-06 13:40 被阅读0次

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

precedencegroup MatchPrecedence {

 associativitynone

 higherThan: DefaultPrecedence

}

infixoperator =~ : MatchPrecedence

/// 正则表达式判断

///

/// - Parameters:

///  - lhs: 左边的参数,内容

///  - rhs: 右边的参数,规则

/// - Returns: 如果符合返回true,否则返回false

func=~(lhs:String, rhs:MMRegExKey) ->Bool{

 do{

 return try RegexHelper(rhs.rawValue).match(lhs)

}catch_{

 return false

    }

}

struct RegexHelper {

    let regex: NSRegularExpression

    init(_pattern:String) throws{

        try regex=NSRegularExpression(pattern: pattern,

                                        options: .caseInsensitive)

    }

    func match(_input:String) ->Bool{

        let matches =regex.matches(in: input,

                                    options: [],

                                    range:NSMakeRange(0, input.utf16.count))

        return matches.count>0

    }

}

struct MMRegExKey: RawRepresentable {

    typealias RawValue =String

    var rawValue:String

    static let phoneNumber = MMRegExKey(rawValue:"^(1[3-9])\\d{9}$")

    static let telephone = MMRegExKey(rawValue:"^[0-9]{8}$")

    static let smsCode = MMRegExKey(rawValue:"^[0-9]{6}$")

    static let paymentCode = MMRegExKey(rawValue:"^[0-9]{6}$")

    static let password = MMRegExKey(rawValue:"^[0-9A-Za-z]{6,20}$")

}

使用:

extension String {

    /// 检查手机号码格式

    ///

    /// - Throws: 错误原因

    func checkPhoneNumber() throws{

        guard !self.isEmpty else{

            throw NSError(localizedDescription:"请输入手机号码")

        }

        guard self =~ .phoneNumber else{

            throw NSError(localizedDescription:"手机号码输入有误")

        }

    }

}

相关文章

  • Currying Operator

    柯里化 操作符 可以直接重载+ - 乘操作符,在swift中有了这些操作符的定义,如果想自定义操作符,比如点乘+*...

  • Swift教程之基本操作符

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

  • Swift 操作符

    Swift 支持重载操作符这样的特性。可以直接重载像 +,-,* 这样的操作符,因为 Swift 中已经有定义了 ...

  • Swift 自定义操作符

    项目PlayGround 在GitHub: https://github.com/zColdWater/Swift...

  • swift 自定义操作符

    声明 infix operator +~ 实现 func +~ (inout firstValue: Int,...

  • Swift自定义操作符

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

  • iOS学习周报三

    在Swift中用??操作符替代判空 在C#中也是有??操作符的,用法和Swift类似用法如下: 相当于 开源项目 ...

  • Swift

    1.Swift构建自定义控件2.Swift开发集锦3.Swift构建自定义控件4.Cocoa的Swift开发专题5...

  • Swift 十二讲 第九讲 操作符重载和泛型

    1. 操作符重载 Swift允许对操作符进行重载,也允许自己定义操作符。这个功能非常强大也很实用。操作符重载有两种...

  • Swift 操作符

    Swift 支持重载操作符的特性,让我们可以自定义一些简单的计算。最经典的例子就是两个二维向量之间的计算了。 首先...

网友评论

      本文标题:Swift自定义操作符

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