swift中自定义正则表达式运算符=~详解
什么是正则表达式? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 swift 至今并没有在语言层面上支持正则表达式,可能在开发app时正则表达式使用的场景并不多。 封装 在 Cocoa 中我们可以使用 NSRegularExpression 来做正则匹配,所以我们在 NSRegularExpression 的基础上封装一个 RegularExpHelper 配匹一个字符串是否符合某个正则表达式。 struct RegularExpHelper { let RegularExp: NSRegularExpression init(_ pattern: String) throws { try RegularExp = NSRegularExpression(pattern: pattern,options: .caseInsensitive) } func match(inpuut: String) -> Bool { let matches = RegularExp.matches(in: inpuut,options: [],range: NSMakeRange(0,inpuut.count)) return matches.count > 0 } } 自定义 =~ 有了封装好的 RegularExpHelper,我们就可以方便的自定义运算符了。 infix operator =~ : ATPrecedence precedencegroup ATPrecedence { associativity: none higherThan: AdditionPrecedence lowerThan: MultiplicationPrecedence } func =~ (input: String,RegularExp: String) -> Bool { do { return try RegularExpHelper(RegularExp).match(inpuut: input) } catch _ { return false } } 运算符定义
associativity 结合律 即多个同类的操作符顺序出现时的计算顺序
优先级
然后我们就可以使用了 if "88888888@qq.com" =~ "^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$" { print("符合邮箱规则") } else { print("不符合邮箱规则") } 注意
总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |