一些常用的正则表达式(手机号身份证号邮箱等判断)
Posted Mr.pengge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些常用的正则表达式(手机号身份证号邮箱等判断)相关的知识,希望对你有一定的参考价值。
1. 判断手机号码格式是否正确,利用正则表达式验证
+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
if
(mobileNum.length != 11)
{
return
NO;
}
/**
* 手机号码:
* 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
* 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
* 联通号段: 130,131,132,155,156,185,186,145,176,1709
* 电信号段: 133,153,180,181,189,177,1700
*/
NSString *MOBILE = @
"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|70)\d{8}$"
;
/**
* 中国移动:China Mobile
* 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
*/
NSString *CM = @
"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\d{8}$)|(^1705\d{7}$)"
;
/**
* 中国联通:China Unicom
* 130,131,132,155,156,185,186,145,176,1709
*/
NSString *CU = @
"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\d{8}$)|(^1709\d{7}$)"
;
/**
* 中国电信:China Telecom
* 133,153,180,181,189,177,1700
*/
NSString *CT = @
"(^1(33|53|77|8[019])\d{8}$)|(^1700\d{7}$)"
;
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, MOBILE];
NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CM];
NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CU];
NSPredicate *regextestct = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CT];
if
(([regextestmobile evaluateWithObject:mobileNum] == YES)
|| ([regextestcm evaluateWithObject:mobileNum] == YES)
|| ([regextestct evaluateWithObject:mobileNum] == YES)
|| ([regextestcu evaluateWithObject:mobileNum] == YES))
{
return
YES;
}
else
{
return
NO;
}
}
2. 判断邮箱格式是否正确,利用正则表达式验证
+ (BOOL)isAvailableEmail:(NSString *)email
{
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, emailRegex];
return
[emailTest evaluateWithObject:email];
}
3. 判断字符串中是否含有空格
+ (BOOL)isHaveSpaceInString:(NSString *)string{
NSRange _range = [string rangeOfString:@
" "
];
if
(_range.location != NSNotFound) {
return
YES;
}
else
{
return
NO;
}
}
4. 判断字符串中是否含有中文
+ (BOOL)isHaveChineseInString:(NSString *)string
{
for
(NSInteger i = 0; i < [string length]; i++){
int a = [string characterAtIndex:i];
if
(a > 0x4e00 && a < 0x9fff) {
return
YES;
}
}
return
NO;
}
5. 判断字符串是否全部为数字
+ (BOOL)isAllNum:(NSString *)string
{
unichar c;
for
(int i=0; i<string.length; i++) { c=
"[string characterAtIndex:i];"
if
(!isdigit(c)) {=
""
return
no;=
""
}=
""
}=
""
return
yes;=
""
}<=
""
pre=
""
><p>判断是否是纯数字</p><pre class=
"brush:js;toolbar:false"
>+ (BOOL)isPureInteger:(NSString *)str {
NSScanner *scanner = [NSScanner scannerWithString:str];
NSInteger val;
return
[scanner scanInteger:&val] && [scanner isAtEnd];
}
6. 过滤一些特殊字符
+ (NSString *)filterSpecialWithString:(NSString *)string
{
// 定义一个特殊字符的集合
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:
@
"@/:;: ;()?「」"、[]{}#%-*+=_|~<>$?^?‘@#$%^&*()_+‘"
];
// 过滤字符串的特殊字符
NSString *newString = [string stringByTrimmingCharactersInSet:set];
return
newString;
}
7. 让ios应用直接退出
+ (void)backOutApp {
UIWindow *window = [[UIApplication sharedApplication].delegate window];
[UIView animateWithDuration:1.0f animations:^{
window.alpha = 0;
} completion:^(BOOL finished) {
exit(0);
}];
}
8. NSArray 快速求总和、最大值、最小值、平均值
+ (NSString *)caculateArray:(NSArray *)array
{
CGFloat sum = [[array valueForKeyPath:@
"@sum.floatValue"
] floatValue];
CGFloat avg = [[array valueForKeyPath:@
"@avg.floatValue"
] floatValue];
CGFloat max =[[array valueForKeyPath:@
"@max.floatValue"
] floatValue];
CGFloat min =[[array valueForKeyPath:@
"@min.floatValue"
] floatValue];
NSLog(@
"%fn%fn%fn%f"
,sum,avg,max,min);
return
[NSString stringWithFormat:@
"%f"
,sum];
}
9. 验证身份证
+ (BOOL)checkIdentityCardNo:(NSString*)value {
value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSInteger length =0;
if
(!value) {
return
NO;
}
else
{
length = value.length;
if
(length !=15 && length !=18) {
return
NO;
}
}
// 省份代码
NSArray *areasArray [email protected][@
"11"
,@
"12"
, @
"13"
,@
"14"
, @
"15"
,@
"21"
, @
"22"
,@
"23"
, @
"31"
,@
"32"
, @
"33"
,@
"34"
, @
"35"
,@
"36"
, @
"37"
,@
"41"
, @
"42"
,@
"43"
, @
"44"
,@
"45"
, @
"46"
,@
"50"
, @
"51"
,@
"52"
, @
"53"
,@
"54"
, @
"61"
,@
"62"
, @
"63"
,@
"64"
, @
"65"
,@
"71"
, @
"81"
,@
"82"
, @
"91"
];
NSString *valueStart2 = [value substringToIndex:2];
BOOL areaFlag =NO;
for
(NSString *areaCode
in
areasArray) {
if
([areaCode isEqualToString:valueStart2]) {
areaFlag =YES;
break
;
}
}
if
(!areaFlag) {
return
false
;
}
NSRegularExpression *regularExpression;
NSUInteger numberofMatch;
NSInteger year =0;
switch
(length) {
case
15:
year = [[value substringWithRange:NSMakeRange(6,2)] integerValue] +1900;
if
(year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"
options:NSRegularExpressionCaseInsensitive
error:nil];
//测试出生日期的合法性
}
else
{
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"
options:NSRegularExpressionCaseInsensitive
error:nil];
//测试出生日期的合法性
}
numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress
range:NSMakeRange(0, value.length)];
if
(numberofMatch >0) {
return
YES;
}
else
{
return
NO;
}
case
18:
year = [value substringWithRange:NSMakeRange(6,4)].intValue;
if
(year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"
options:NSRegularExpressionCaseInsensitive error:nil];
//测试出生日期的合法性
}
else
{
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"
options:NSRegularExpressionCaseInsensitive error:nil];
//测试出生日期的合法性
}
numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress range:NSMakeRange(0, value.length)];
if
(numberofMatch >0) {
int S = ([value substringWithRange:NSMakeRange(0,1)].intValue + [value substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([value substringWithRange:NSMakeRange(1,1)].intValue + [value substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([value substringWithRange:NSMakeRange(2,1)].intValue + [value substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([value substringWithRange:NSMakeRange(3,1)].intValue + [value substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([value substringWithRange:NSMakeRange(4,1)].intValue + [value substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([value substringWithRange:NSMakeRange(5,1)].intValue + [value substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([value substringWithRange:NSMakeRange(6,1)].intValue + [value substringWithRange:NSMakeRange(16,1)].intValue) *2 + [value substringWithRange:NSMakeRange(7,1)].intValue *1 + [value substringWithRange:NSMakeRange(8,1)].intValue *6 + [value substringWithRange:NSMakeRange(9,1)].intValue *3;
int Y = S ;
NSString *M [email protected]
"F"
;
NSString *JYM [email protected]
"10X98765432"
;
M = [JYM substringWithRange:NSMakeRange(Y,1)];
// 判断校验位
if
([M isEqualToString:[value substringWithRange:NSMakeRange(17,1)]]) {
return
YES;
// 检测ID的校验位
}
else
{
return
NO;
}
}
else
{
return
NO;
}
default
:
return
false
;
}
}
10. 设置Label里的字符有不同的颜色
//可根据自己的需求进行增删改
- (void)stringColorSet {
NSString*string = @
"如何使得Label里的字符有不同的颜色?"
;
NSRange range = [string rangeOfString: @
"Label"
];
NSMutableAttributedString*attribute = [[NSMutableAttributedString alloc] initWithString: string];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor redColor]}range: range];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor greenColor]}range: NSMakeRange(0, range.location)];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor cyanColor]}range: NSMakeRange(range.location+ range.length, 5)];
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0.0f, 100.0f, 320.0f, 100.0f)];
[label setText: string];
[label setAttributedText: attribute];
}
以上是关于一些常用的正则表达式(手机号身份证号邮箱等判断)的主要内容,如果未能解决你的问题,请参考以下文章
Android 正则表达式验证手机号姓名(包含少数民族)身份证号