什么是正则表达式?
正则表达式,又称正规表示法、常规表示法(英语: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 "[email protected]" =~ "^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$" { print("符合邮箱规则") } else { print("不符合邮箱规则") }
注意
疯狂医院达什医生中文版(Crazy Hospital)
疯狂医院达什医生最新版是一款医院模拟经营类游戏,逼真的场景画
宝宝庄园官方版
宝宝庄园官方版是一款超级经典好玩的模拟经营类型的手游,这个游
桃源记官方正版
桃源记是一款休闲娱乐类的水墨手绘风格打造的模拟经营手游。玩家
长途巴士模拟器手机版
长途巴士模拟器汉化版是一款十分比真好玩的大巴车模拟驾驶运营类
房东模拟器最新版2024
房东模拟器中文版是一个超级有趣的模拟经营类型的手游,这个游戏