在项目开发过程中,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. 编辑器Ultraedit快捷键

    编辑器Ultraedit快捷键说到编辑器的快捷键,VIM是无与伦比的.要反对,也得是带脚踏板的EmaCS.UE还是有差距的,很大差距.注意:VIM是开源.免费的,而UE则需要注册.UE是Windows ...

  2. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  3. HTTP Client工具类

    HTTP Client工具类: import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.ht ...

  4. js面向对象,多种创建对象方法!

    1.对象字面量. var clock={ hour:12, minute:10, second:10, showTime:function(){ alert(this.hour+":&quo ...

  5. mb_系列函数和普通字符函数的区别

    <?php //phpinfo(); $str = 'abcdef'; echo strlen($str);// 6 echo '<br/>'; echo substr($str, ...

  6. C#实现MS-Office文档转Pdf(Word、Execel、PowerPoint、Visio、Project)

    using System; using Microsoft.Office.Core; namespace Office { class Util { private Util() { } /// &l ...

  7. 用jQuery修改background图片平铺方式

    <html><head> <title>测试css修改</title></head><body> <img src=&qu ...

  8. DHCP配置

    DHCP服务器IP:192.168.1.10 一,安装dhcp [root@localhost ~]# yum install dhcp Loaded plugins: product-id, sub ...

  9. runtime 运行机制

    // //  HKPerson.h //  runtimeDemo1 // //  Created by 123 on 16/5/23. //  Copyright © 2016年 123. All ...

  10. .Net多文件同时上传(Jquery Uploadify)

    前提:领导给了我一个文件夹,里面有4000千多张产品图片,每张图片已产品编号+产品名称命名,要求是让我把4000多张产品图片上传到服务器端,而且要以产品编码创建n个文件夹,每张图片放到对应的文件夹下. ...