//
// NSString+ToolString.h
// Tools
//
// Created by webapps on /6/6.
// Copyright © wsq. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (ToolString)
/**
判断该字符串是不是一个有效的URL
@return YES:是一个有效的URL or NO
*/
- (BOOL)isValidUrl;
/**
判断该字符串是不是一个有效的邮箱
@return YES:是一个有效的Email or NO
*/
- (BOOL)isValidEmail;
/**
判断该字符串是不是一个有效的邮手机号(中国大陆)
@return YES:是一个有效的phoneNum or NO
*/
- (BOOL)isValidPhoneNum;
/**
判断该字符串是不是一个有效的省份证号(中国大陆)
@return YES:是一个有效的isValidIdentityCard or NO
*/
- (BOOL)isValidIdentityCard;
/**
根据image的data判断图片类型
@param data 图片data
@return 图片类型(png、jpg...)
*/
+ (NSString *)contentTypeWithImageData: (NSData *)data;
@end
//
// NSString+ToolString.m
// Tools
//
// Created by webapps on /6/6.
// Copyright © wsq. All rights reserved.
//
#import "NSString+ToolString.h"
@implementation NSString (ToolString)
- (BOOL)isValidUrl {
NSString *regex =@"[a-zA-z]+://[^\\s]*";
NSPredicate *urlTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex];
return [urlTestevaluateWithObject:self];
}
- (BOOL)isValidEmail{
NSString *emailRegex =@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTestevaluateWithObject:self];
}
- (BOOL)isValidPhoneNum{
if (self.length !=11)
{
returnNO;
}
/**
* 手机号码:
* 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]|7[0678])\\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}$)";
/**
25 * 大陆地区固话及小灵通
26 * 区号:010,020,021,022,023,024,025,027,028,029
27 * 号码:七位或八位
28 */
// NSString * PHS = @"^(0[0-9]{2})\\d{8}$|^(0[0-9]{3}(\\d{7,8}))$";
NSPredicate *regextestmobile = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", MOBILE];
NSPredicate *regextestcm = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CM];
NSPredicate *regextestcu = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CU];
NSPredicate *regextestct = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CT];
if (([regextestmobileevaluateWithObject:self] ==YES)
|| ([regextestcm evaluateWithObject:self] ==YES)
|| ([regextestct evaluateWithObject:self] ==YES)
|| ([regextestcu evaluateWithObject:self] ==YES))
{
returnYES;
}
else
{
returnNO;
}}
- (BOOL)isValidIdentityCard{
BOOL flag;
if (self.length <=0) {
flag = NO;
return flag;
}
NSString *regex2 =@"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *identityCardPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex2];
return [identityCardPredicateevaluateWithObject:self];
}
+ (NSString *)contentTypeWithImageData: (NSData *)data {
uint8_t c;
[data getBytes:&clength:1];
switch (c) {
case0xFF:
return@"jpeg";
case0x89:
return@"png";
case0x47:
return@"gif";
case0x49:
case0x4D:
return@"tiff";
case0x52:
if ([datalength] < 12) {
returnnil;
}
NSString *testString = [[NSStringalloc] initWithData:[datasubdataWithRange:NSMakeRange(0,12)] encoding:NSASCIIStringEncoding];
if ([testStringhasPrefix:@"RIFF"] && [testStringhasSuffix:@"WEBP"]) {
return@"webp";
}
returnnil;
}
returnnil;
}
@end
更多工具:/download/qq_33646395/9944883