谓词与正则表达式(OC)

发布时间:2026/9/16 22:23:25
谓词与正则表达式(OC) 谓词与正则表达式文章目录谓词与正则表达式一、谓词二、正则表达式三、示例邮箱格式判断一、谓词什么是谓词谓词相当于一个过滤器定义一个判断标准将符合标准的对象保留下来常用谓词语法比较类运算符意思示例/等于age 18!/不等于age ! 20大于score 60小于price 100大于等于age 18小于等于count 10逻辑运算类运算符含义示例AND/且两个条件都满足age 18 AND score 60OR/ 或满足一个即可name 张三 OR name 李四NOT/!非取反NOT (age 18)范围类运算符含义示例IN在指定集合内name IN {张三,李四,王五}BETWEEN在两个值之间闭区间age BETWEEN {18, 30}字符串匹配运算运算符含义补充说明BEGINSWITH以指定内容开头加[c]不区分大小写BEGINSWITH[c]ENDSWITH以指定内容结尾加[d]不区分重音符号CONTAINS包含指定内容例name CONTAINS 张LIKE通配符匹配*代表任意长度字符?代表单个字符MATCHES正则表达式匹配后文详细讲解创建谓词字符串NSPredicate*pred[NSPredicate predicateWithFormat:age % AND name %,age,name];BlockNSPredicate*pred[NSPredicate predicateWithBlock:^BOOL(id obj,NSDictionary*bindings){// 在这里写判断逻辑返回 YES 表示符合条件returnYES/NO;}];示例NSArray*people[...];NSPredicate*pred[NSPredicate predicateWithBlock:^BOOL(Person*person,NSDictionary*bindings){// 年龄是偶数并且名字长度大于1return(person.age%20)(person.name.length1);}];NSArray*result[people filteredArrayUsingPredicate:pred];布尔值// 永远返回 YES所有对象都符合条件NSPredicate*truePred[NSPredicate predicateWithValue:YES];// 永远返回 NO所有对象都不符合条件NSPredicate*falsePred[NSPredicate predicateWithValue:NO];二、正则表达式什么是正则表达式正则表达式是一套通用的字符串匹配规则用特殊符号组合成规则语法锚点符号含义^匹配字符串开头$匹配字符串结尾元字符符号含义.匹配任意单个字符换行符除外\d匹配任意数字0-9\D匹配任意非数字\w匹配字母、数字、下划线\W匹配非字母数字下划线\s匹配空白字符空格、制表符、换行等\S匹配非空白字符量词符号含义*前面的字符出现0 次或多次前面的字符出现1 次或多次?前面的字符出现0 次或 1 次{n}前面的字符恰好出现 n 次{n,}前面的字符至少出现 n 次{n,m}前面的字符出现 n~m 次符号含义[abc]匹配 a、b、c 中的任意一个[a-z]匹配 a 到 z 的任意小写字母[^abc]匹配除了 a、b、c 之外的字符\u4e00-\u9fa5汉字范围贪婪与懒惰对于a123b456b贪婪a.*b与懒惰a.*?b贪婪先吃掉整个字符串再从右往左吐出字符直到匹配成功结果就是a123b456b懒惰从当前位置开始每次只多吃一个字符够了就停结果a123b三、示例邮箱格式判断NSString*emailtest_123163.com;NSString*regex[A-Za-z0-9._%-][A-Za-z0-9.-]\\.[A-Za-z]{2,};NSPredicate*pred[NSPredicate predicateWithFormat:SELF MATCHES %,regex];BOOL isValid[pred evaluateWithObject:email];说明[A-Z0-9a-z]含义邮箱用户名只能是大小写字母 数字不能为空。匹配邮箱格式号[A-Za-z0-9]和第一段规则一样域名主体如 163、qq、gmail只能大小写字母 数字至少 1 位。\\.正则里单独. 匹配任意字符不能用来表示小数点其实是因为在字符串中\也不是真正的\它也是一个转义符,我们需要让它的前面再套一个\让它成为真正的\,也就是\\.作用匹配邮箱里的点比如qq.com中间的.[A-Za-z]{2,}[A-Za-z]只能大小写字母{2,}最少 2 个字符无上限匹配域名后缀com、cn、org、net、top等不能是 1 位后缀

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询