[Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确
本文将演示使用正则表达式判断邮箱的格式是否正确。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 3 //创建一个结构体,用于实现正则表达式的检测 4 struct RegexHelper 5 { 6 //Swift并没有提供处理正则表达式的类, 7 //本文将使用OC正则表达式类,进行正则表达式的检测 8 let regex: NSRegularExpression? 9 10 //对结构体进行初始化 11 //并传入一个字符串参数,作为正则表达式 12 init(_ pattern: String) 13 { 14 //添加一个异常捕捉语句,用来执行正则表达式的匹配工作 15 do 16 { 17 //创建一个正则表达式,并不对大小写进行区分 18 regex = try NSRegularExpression(pattern: pattern, 19 options: NSRegularExpression.Options.caseInsensitive) 20 } 21 catch 22 { 23 //如果正则表达式创建失败,则将正则表达式对象置空 24 regex = nil 25 } 26 } 27 28 //创建一个方法,用来执行正则表达式的检测工作,并返回一个布尔结果 29 func match(_ input: String) -> Bool 30 { 31 //开始对字符串进行正则表达式的检测 32 if let matches = regex?.matches(in: input, 33 options: .reportProgress, 34 range: NSMakeRange(0, input.lengthOfBytes(using: String.Encoding.utf8))) 35 { 36 //比较在字符串中,匹配正则表达式的位置是否大于0。 37 //以判断字符串与正则表达式是否匹配。 38 return matches.count > 0 39 } 40 else 41 { 42 //如果字符串不匹配正则表达式,则返回否的布尔结果。 43 return false 44 } 45 } 46 } 47 48 class ViewController: UIViewController { 49 50 override func viewDidLoad() { 51 super.viewDidLoad() 52 // Do any additional setup after loading the view, typically from a nib. 53 54 //创建一个字符串作为正则表达式,正则表达式的其他格式,请自行搜索 55 let pattern = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$" 56 //初始化一个正则表达式结构体,以检测字符串是否匹配正则表达式。 57 let matcher = RegexHelper(pattern) 58 //创建一个字符串,用来检测此字符串的邮箱,是否符合正确的邮箱格式 59 let result = "newsagency@163.com" 60 61 //调用结构体对象的匹配方法,检测邮箱格式是否正确。 62 if matcher.match(result) 63 { 64 //如果格式正确,在控制台打印输出日志 65 print("It's an email.") 66 } 67 else 68 { 69 //如果格式不正确,则在控制台打印输出日志信息。 70 print("It's not an email.") 71 } 72 } 73 74 override func didReceiveMemoryWarning() { 75 super.didReceiveMemoryWarning() 76 // Dispose of any resources that can be recreated. 77 } 78 }
分类:
Xcode实际操作
标签:
Xcode 实际操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)