前几天在用正则表达试验证密码输入时发现不能区分出中英文分号。
代码设置的字符编码是UTF-8
代码:
NSString* regex = @"^[;]{0,6}$"; // 其中分号为英文分号,长度是随意写的个控制;
NSPredicate* pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

BOOL isMatch;// 正则表达试验证返回值,YES 为通过, NO 为不通过;

isMatch = [pred evaluateWithObject: @";"]; // 英文分号,返回结果 YES 是通过
isMatch = [pred evaluateWithObject: @";"]; // 中文分号,返回结果 YES 也是通过

于是这样写:

isMatch = [pred evaluateWithObject:[[NSString alloc] initWithFormat:@"%s", [@";" cStringUsingEncoding:NSUTF8StringEncoding]]]; // 英文分号,返回结果 YES 是通过

isMatch = [pred evaluateWithObject:[[NSString alloc] initWithFormat:@"%s", [@";" cStringUsingEncoding:NSUTF8StringEncoding]]]; // 中文分号,返回结果 NO 不通过;

这样写就可以正正确验证了。原因我也不明,如果是编码问题,中英文 句号 用第一种写却能分开。

--------------------------------------------------------------------
若有其他凝问或文中有错误,请及时向我指出,
我好及时改正,同时也让我们一起进步。
email : binary_space@126.com
qq : 1035862795
敲门砖: 代码谱写人生

oc 中正则表达式不区分中英文分号的问题相关推荐

  1. SQLServer中区分中英文标点符号

    SQLServer中区分中英文标点符号 问题出现背景 解决方法 方法一:修改表结构 方法二:自定义排序规则(COLLATE) COLLATE使用简述 问题出现背景 最近在一个SQLServer的存储过 ...

  2. 区分中英文字符的两种方法: 正则和charCodeAt()方法

    最近在为项目写登录注册系列页面, 表单验证无疑是不可缺少的部分, 在这个jQ插件满天飞的web年代, 表单验证倒也不是难事. 但再好的插件, 也并不能做到十全十美, 比如这次用到的我先前介绍过的Van ...

  3. OC中Runtime浅析

    近期了解了一下OC的Runtime,真的是OC中非常强大的一个机制,看起来比較底层,但事实上能够有非常多活用的方式. 什么是Runtime 我们尽管是用Objective-C写的代码,事实上在运行过程 ...

  4. JS区分中英文字符的两种方法

    JS区分中英文字符的两种方法: 正则和charCodeAt()方法. 正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. ...

  5. OC中栈区与堆区的内存概念解析

    栈区是先进后出,队列是先进先出. 栈区就相当于玻璃杯,往玻璃杯里放奥利奥,第一块放入的奥利奥,肯定是最后一个拿出来. 队列就相当于掉了底的玻璃杯,最先放入的,必定最先掉出来. 网上有个更绝的比喻:队列 ...

  6. JS 区分中英文字符/获取字符串实际长度(区分中英文)

    获取字符串中全部中文字符 ^x00-x80 是全角字符的范围(注意这里有个非),通过正则来获取字符串中的全角字符. // 获取全部中文字符(字符串) ,返回中文字符组成的数组 function get ...

  7. jQuery截取字符串插件区分中英文:

    截取字符串功能在大量网站都有应用,比如新闻列表这样的功能,因为新闻的标题长途未必都是恰如其分的,所以要根据需要截取指定长度的字符串,下面就分享一个jQuery实现的插件,此插件能够截取指定长度的字符串 ...

  8. 浅谈OC中Block的本质

    Block简介 block是将函数及其执行上下文封装起来的一个对象 在block实现的内部,有很多变量,因为block也是一个对象 其中包含了诸如isa指针,imp指针等对象变量,还有储存其截获变量的 ...

  9. iOS开发中正则表达式的基础使用

    正则表达式?什么是正则表达式? 百度百科给出的解释是这样的:正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 根据我的学习,我理解的正则表达式是:一个字符串,这个字符串用来描述我们 ...

  10. [绍棠] iOS开发中正则表达式的基础使用

    正则表达式?什么是正则表达式? 百度百科给出的解释是这样的:正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 根据我的学习,我理解的正则表达式是:一个字符串,这个字符串用来描述我们 ...

最新文章

  1. Oracle 函数中动态执行语句
  2. php调用txt接口,PHP 如何更优雅地调用 API 接口
  3. FreeRTOS之列表和列表项
  4. 高三!忏悔ing~(在这儿的第一篇随笔)
  5. 6. PHP 正则表达式
  6. 网络运维系列:Ubnt ER-X初始化和开启硬件NAT
  7. 【Vue脚手架安装教程】
  8. Linux如何查看端口
  9. Eclipse中导入项目前有红叉提示但是项目内容不报错解决办法
  10. MATLAB打不开,只在任务栏闪一下就无反应了怎么办?
  11. 【HNOI2017】大佬-dalao
  12. mysql大括号的意思_正则(括号)、[中括号]、{大括号}的区别
  13. 学习四旋翼(三):DMP姿态解算和串级PID控制姿态
  14. 智能机器人用什么语言编程
  15. 1G2G3G4G5G:一部波澜壮阔的移动通信史
  16. ubuntu设置pac代理
  17. 位图+布隆过滤器-待续
  18. MySQL在linux上(cmake)的source code安装方法
  19. Openwrt手动释放内存
  20. 云服务器被植入挖矿木马,CPU飙升200%

热门文章

  1. Hibernate中evict方法和clear方法说明
  2. 龙芯3A3000笔记本玩机笔记
  3. 51单片机显示时间日期
  4. 鸿蒙哦叟,苕木匠时评:说鸿蒙“
  5. 当我们电脑上的Microsoft Office2003/2007/2010无法卸载时怎么处理?
  6. 【概率】由已有的随机生成器构造出新的随机生成器
  7. Kettle (1) - 读取 CSV 文件
  8. 关于数据迁移:解决kettle中mysql的数据是tinyint的kettle查出来后变成boolean问题
  9. 河南省第八届ACM程序设计竞赛(未完再续)
  10. linux link 硬链接,Linux系统中的硬链接(hard link)与软链接(symbolic link)