iOS - 正则表达式判断邮箱、身份证,车牌,URL等..是否正确:
- //邮箱
- + (BOOL) validateEmail:(NSString *)email
- {
- NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
- NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
- return [emailTest evaluateWithObject:email];
- }
- //手机号码验证
- + (BOOL) validateMobile:(NSString *)mobile
- {
- //手机号以13, 15,18开头,八个 \d 数字字符
- NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
- NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
- return [phoneTest evaluateWithObject:mobile];
- }
- //车牌号验证
- + (BOOL) validateCarNo:(NSString *)carNo
- {
- NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
- NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
- NSLog(@"carTest is %@",carTest);
- return [carTest evaluateWithObject:carNo];
- }
- //车型
- + (BOOL) validateCarType:(NSString *)CarType
- {
- NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$";
- NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex];
- return [carTest evaluateWithObject:CarType];
- }
- //用户名
- + (BOOL) validateUserName:(NSString *)name
- {
- NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$";
- NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];
- BOOL B = [userNamePredicate evaluateWithObject:name];
- return B;
- }
- //密码
- + (BOOL) validatePassword:(NSString *)passWord
- {
- NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
- NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
- return [passWordPredicate evaluateWithObject:passWord];
- }
- //昵称
- + (BOOL) validateNickname:(NSString *)nickname
- {
- NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$";
- NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
- return [passWordPredicate evaluateWithObject:nickname];
- }
- //身份证号
- + (BOOL) validateIdentityCard: (NSString *)identityCard
- {
- BOOL flag;
- if (identityCard.length <= 0) {
- flag = NO;
- return flag;
- }
- NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
- NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
- return [identityCardPredicate evaluateWithObject:identityCard];
- }
#pragma 正则匹配手机号
+ (
BOOL
)checkTelNumber:(
NSString
*) telNumber
{
NSString
*pattern = @^1+[3578]+\d{9};
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:telNumber];
return
isMatch;
}
#pragma 正则匹配用户密码6-18位数字和字母组合
+ (
BOOL
)checkPassword:(
NSString
*) password
{
NSString
*pattern = @^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18};
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:password];
return
isMatch;
}
#pragma 正则匹配用户姓名,20位的中文或英文
+ (
BOOL
)checkUserName : (
NSString
*) userName
{
NSString
*pattern = @^[a-zA-Z一-龥]{1,20};
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:userName];
return
isMatch;
}
#pragma 正则匹配用户身份证号15或18位
+ (
BOOL
)checkUserIdCard: (
NSString
*) idCard
{
NSString
*pattern = @(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$);
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:idCard];
return
isMatch;
}
#pragma 正则匹员工号,12位的数字
+ (
BOOL
)checkEmployeeNumber : (
NSString
*) number
{
NSString
*pattern = @^[0-9]{12};
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:number];
return
isMatch;
}
#pragma 正则匹配URL
+ (
BOOL
)checkURL : (
NSString
*) url
{
NSString
*pattern = @^[0-9A-Za-z]{1,50};
NSPredicate
*pred = [
NSPredicate
predicateWithFormat:
@SELF
MATCHES %@, pattern];
BOOL
isMatch = [pred evaluateWithObject:url];
return
isMatch;
}
/**
* 功能:验证身份证是否合法
* 参数:输入的身份证号
*/
- (BOOL)isValidPersonID {
// 判断位数
if (self.length != 15 && self.length != 18) {
return NO;
}
NSString *carid = self;
long lSumQT = 0;
// 加权因子
int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 校验码
unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};
// 将15位身份证号转换成18位
NSMutableString *mString = [NSMutableString stringWithString:self];
if (self.length == 15) {
[mString insertString:@"19" atIndex:6];
long p = 0;
const char *pid = [mString UTF8String];
for (int i = 0; i<= 16; i++) {
p += (pid[i] - 48) * R[i];
}
int o = p % 11;
NSString *string_content = [NSString stringWithFormat:@"%c", sChecker[o]];
[mString insertString:string_content atIndex:[mString length]];
carid = mString;
}
// 判断地区码
NSString * sProvince = [carid substringToIndex:2];
if (![self areaCode:sProvince]) {
return NO;
}
// 判断年月日是否有效
// 年份
int strYear = [[self substringWithString:carid begin:6 end:4] intValue];
// 月份
int strMonth = [[self substringWithString:carid begin:10 end:2] intValue];
// 日
int strDay = [[self substringWithString:carid begin:12 end:2] intValue];
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:localZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",
strYear, strMonth, strDay]];
if (date == nil) {
return NO;
}
const char *PaperId = [carid UTF8String];
// 检验长度
if(18 != strlen(PaperId)) return NO;
// 校验数字
for (int i = 0; i < 18; i++) {
if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) ) {
return NO;
}
}
// 验证最末的校验码
for (int i=0; i<=16; i++) {
lSumQT += (PaperId[i]-48) * R[i];
}
if (sChecker[lSumQT%11] != PaperId[17] ) {
return NO;
}
return YES;
}
iOS - 正则表达式判断邮箱、身份证,车牌,URL等..是否正确:的更多相关文章
- iOS - 正则表达式判断邮箱、身份证..是否正确:
iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex ...
- iOS 正则表达式判断邮箱、身份证..是否正确
//邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Z ...
- iOS 正则表达式-判断邮箱、手机号
判断是否是邮箱 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[ ...
- iOS开发——判断邮箱格式
//判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...
- ORACLE中使用SQL的正则表达式判断邮箱格式
在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断: ) FROM dual WHERE regexp_like(v_mail,'^\w+((-\w+)|(\.\w+))* ...
- 31、iOS 正则表达式判断UITextField是否为全汉字,全字母,全数字,数字和字母
判断全汉字 if ([self deptNameInputShouldChinese]) { [DemonAlertHelper showToastWithMessage:@"只能是中文&q ...
- [Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确
目录:[Swift]Xcode实际操作 本文将演示使用正则表达式判断邮箱的格式是否正确. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...
- iOS:判断用户名是否以字母开头、手机号输入、邮箱是否正确的正则表达式
新建一个字符串分类:NSString(Check),定义类方法更方便 .h文件 #import <Foundation/Foundation.h> @interface NSString ...
- Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等
概述 现在Android应用在注册的时候基本会校验邮箱.手机号.密码.身份证号码其中一项或多项,特此收集了相关的正则表达式给大家分享.除了正则表达式,文章末尾提供Demo中有惊喜哦! 具体验证的图片效 ...
随机推荐
- 解读:计数器Counter
Counters: 44 File System Counters FILE: Number of bytes read=655771325 FILE: Number of bytes written ...
- 二进制转化 - bitset
2017-08-28 10:55:17 writer:pprp 在之前写了一个关于bitset用法的贴之后,这是第一次运用,不得不说如果不用的话还是一头雾水 以后写代码要标记开始时间,和结束时间了,我 ...
- sstream头文件-getline 函数 和 stringstream函数 和string的常见用法
2017-08-12 19:50:50 writer:pprp getline函数可以读入一行的字符,不论有没有空格 第一个参数,流 第二个参数 ,将流读入的地方 第三个参数,当读到某个字符的时候停止 ...
- JAVA初学者(一)
2015-12-15 21:26:17 刚学的java 做个总结: 1.构造函数没有返回值. 2.A对象调用Q的方法,Q方法里的变量就是A的变量 Fraction add(Fraction f) 在 ...
- python列表解析进阶
如果要获得一个(元素为整数的)列表里面的偶数,很容易想到列表解析: [i for i in nums if i%2==0] 但是如果要使列表的长度不变,让奇数用0来填充,可能你会直接写: [i for ...
- angularjs控制器之间的数据共享与通信
1.可以写一个service服务,从而达到数据和代码的共享; var app=angular.module('app',[]); app.service('ObjectService', [Objec ...
- Vue 及框架响应式系统原理
个人bolg地址 全局概览 Vue运行内部运行机制 总览图: 初始化及挂载 在 new Vue()之后. Vue 会调用 _init 函数进行初始化,也就是这里的 init 过程,它会初始化生命周期. ...
- VS的 X64下的汇编编译
参考博客 VS编译64位汇编时报错:error C4235: 使用了非标准扩展: 不支持在此结构上使用“_asm”关键字 在用VS2013编译内联汇编时,报如下错误: 错误 5 error ...
- JavaScript中Function Declaration与Function Expression 或者说 function fn(){}和var fn=function(){} 的区别
JavaScript是一种解释型语言,函数声明会在JavaScript代码加载后.执行前被解释,而函数表达式只有在执行到这一行代码时才会被解释. 在JS中有两种定义函数的方式, 1是:var aaa= ...
- inline-block 文字与图片不对齐
文字旁边搭配图片时,发现图片比文字靠上,原来默认的情况是图片顶对齐而文字底对齐,通过设置css属性可以使得图片与文字对齐. 设置各对象的vertical-align属性,属性说明: baseline- ...