在项目开发过程中,NSString类型的变量是经常用到的,而且我们常常会对其格式进行对应的各种校验,你比如,在登录注册的时候,需要验证用户名的长度,用户名的字符组成等等,其实现在也有很多第三方提供的NSString的Category老方便我们做各种判断。由于最近做的一个项目需要判断密码的格式。主要在以下几个方面。

  1.判断密码的强度:在一些项目中,不允许密码中出现“123456”,“123”,“abcde”等这种比较简单而且有规律的密码。

  

/**

*  判断密码的强度

*

*  @param password 密码字符串

*

*  @return如果密码比较强则返回YES,如果密码较弱返回是NO

*/

- (BOOL)judgePassWordStrengthWithPassWord:(NSString*)password{

NSArray *array = @[@"000000",@"111111",@"11111111",@"112233",@"123123",@"123321",@"123456",@"12345678",@"654321",@"666666",@"888888",@"abcdef",@"abcabc",@"abc123",@"a1b2c3",@"aaa111",@"123qwe",@"qwerty",@"qweasd",@"admin",@"password",@"p@ssword",@"passwd",@"iloveyou",@"5201314",@"password",@"123456",@"12345678",@"qwerty",@"abc123",@"monkey",@"1234567",@"letmein",@"trustno1",@"dragon",@"baseball",@"111111",@"iloveyou",@"master",@"sunshine",@"ashley",@"bailey",@"passw0rd",@"shadow",@"123123",@"654321",@"superman",@"qazwsx",@"michael",@"football"];

NSRange range;

BOOL result = YES;

int count  = array.count;

for (int i = 0; i < count; i++) {

range = [password rangeOfString:array[i]];

if(range.location != NSNotFound){

result = NO;

}

}

return result;

}

可以看到,对于一些不允许出现的密码,组合成一个数组,然后针对每一个数组中的元素来和密码进行比对,看密码是否和其相同,或者包含。

2.判断密码中是否有汉字,对于一些字符串由于编码的原因,不允许出现汉字。

  

/**

*  判断密码是否包含汉字

*

*  @param inputString 字符串

*

*  @return如果包含汉字,则返回YES,如果不包含汉字,则返回NO

*/

-(BOOL)isHasChinese:(NSString *)inputString{

for(int i=0; i< [inputString length];i++){

int a = [inputString characterAtIndex:i];

if( a > 0x4e00 && a < 0x9fff)

return YES;

}

returnNO;

}

判断字符串中是否包含汉字,只能通过拆解字符串中的汉字,然后针对每个字符的ascall码来判断。

3.判断字符串为手机号码 

-(BOOL)isNumText:(NSString *)aNumString

{

NSString *regex = @"^((13[0-9])|(147)|(15[^4,\\D])|(18[0-9]))\\d{8}$";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];

BOOL isPhoneNumRight;

isPhoneNumRight = [predicate evaluateWithObject:aNumString];

if(isPhoneNumRight)

{

return NO;

}else

{

return YES;

}

}

NSString格式校验的更多相关文章

  1. 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

  2. JSON格式校验

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  3. 通过Pojo对象 field 属性加注解实现格式校验,极大的降低代码量

    近期做一个接口.接受外系统的报文,通过XStream转换成java对象以后.须要对当中的字段做格式校验. 要求例如以下: 传统的方式是硬编码校验.可是对于field非常多的情况.代码量暴增.easy出 ...

  4. yaml语法及格式校验

    基本语法 1.yml文件以缩进代表层级关系 2.缩进不允许使用tab只能使用空格 3.空格的个数不重要,只要相同层级的元素左对齐即可 4.大小写敏感 5.数据格式为,名称:(空格)值 也就是说,如果冒 ...

  5. js正则表达式进行格式校验

    今天做了个js正则表达式的练习,利用正则表达式进行注册信息格式验证,注册信息界面如下: 格式要求: 1.学号项不能为空,必须为纯数字,不能与数据库中的重复,正则表达式/^\d+$/g: 2.姓名项不能 ...

  6. Atom 编辑器安装 linter-eslint 插件,并配置使其支持 vue 文件中的 js 格式校验

    安装方式有如下几种. 1.最常用的安装方式. # 进入atom插件文件夹 cd ~/.atom/packages/ # git clone 插件源文件 git clone https://github ...

  7. 转化秒数为正规的时间格式{NSString格式的秒数转成NSDate格式后再以NSString形式输出)

    -(NSString*)changeNumToTime:(NSString*)str { NSDate *date = [NSDate dateWithTimeIntervalSince1970:[s ...

  8. js判断当前时间前几天和格式校验

    addday天后的日期 function time(addday) { var now= new Date(); nowdate=now.getDate(); //alert(nowdate); no ...

  9. intellij idea 之 CheckStyle 代码格式校验

随机推荐

  1. alphaRGB 转 RGB、16位

    struct xColor { BYTE b, g, r, a; }; struct RGBColor { BYTE b, g, r; }; //void operator <<(RGBC ...

  2. nginx下开启pathinfo模式

    第一种方式是通过重写url来实现pathinfo模式: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$ ...

  3. (转)jquery easyui treegrid使用小结 (主要讲的是如何编辑easyui中的行信息包括添加 下拉列表等)

    在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列 ...

  4. OC基础语法之方法

    看惯了c#的代码再去看Object-C的代码,总感觉有点懵逼,记录下OC的方法用法:   在OC中一个类中的方法有两种类型:实例方法(类似于非静态函数),类方法(类似非静态函数). 实例方法前用(-) ...

  5. android ListView点击item返回后listview滚动位置

    1.Don't work when dynamically loading content Parcelable state; @Override public void onPause() { // ...

  6. C#中的问号

    本人转载自: ①http://msdn.microsoft.com/zh-cn/practices/dd391752.aspx ②http://jhxk.iteye.com/blog/439888 在 ...

  7. OpenMP并行构造的schedule子句详解 (转载)

    原文:http://blog.csdn.net/gengshenghong/article/details/7000979 schedule的语法为: schedule(kind, [chunk_si ...

  8. 2016/10/28 很久没更了 leetcode解题 3sum问题进阶版4sum

    18. 4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c  ...

  9. easyui datagrid 加载两次请求,触发两次ajax 请求 问题

    datagrid初始化的时候请求两次URL 两种情况 1. <table id="gridview" class="easyui-datagrid"> ...

  10. vi

    e! 放弃所有修改,从上次保存文件开始再编辑 shift+g 最后一行 gg 第一行 u 恢复上一次操作 如果查找下一个,按"n"即可. set nu 显示行号 编辑模式下111g ...