#import "ViewController.h"
#import "NSString+RegularExpression.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// [self test];
[self test2];
}
- (void)test2
{
// QQ号校验
//匹配QQ号码,匹配规则:全部是都是数字,第一个字符非0,长度为(6~11)
// ^[1-9]\d{5,10}$ // 必须从头匹配到尾
// ^ 指定正则从最开始就必须匹配
// $ 指定正则从匹配开始一直检验到结尾
// NSString *pattern = @"^[1-9]\\d{5,10}$";
//
// NSString *qq = @"34567890";
// NSString *result = [qq firstMatchStringWithPattern:pattern];
// NSLog(@"%@", result);
//匹配规则:以0或86或空开头,后面第一个数字为"1",当第二数字为 "3,5,8" 第三个数字为"0-9",当第二数字为"7" 第三个数字为"6或7或8",当第二个数字为"4"时,第三个数字为"5或7",手机号码位数为11位.
// | 表示 或者关系
// (0|86)? 1 (([358][0-9]) | (7[678]) | (4[57])) \d{8}
NSString *pattern = @"^(0|86)?1(([358][0-9])|(7[678])|(4[57]))\\d{8}$";
NSString *phone = @"013760671969";
NSString *result = [phone firstMatchStringWithPattern:pattern];
NSLog(@"%@", result);
}
- (void)test
{
/*================= 检验某句话当中是否有数字 =================*/
NSString *content = @"德码西亚ABC6666_6666666";
// @"正则表达式"; 用来做文字查找/匹配
// NSString *pattern = @"555";
// NSString *pattern = @"[56]"; // [56] 查找5 或者 6
// NSString *pattern = @"[0123456789]";
// NSString *pattern = @"\\d"; // 使用 \d 来表示整数
// NSString *pattern = @"[0-5]"; // 0-5 表示从 0 到 5
// NSString *pattern = @"6{10}"; // {10} 表示重复10次
// NSString *pattern = @"6{5,10}"; // {5,10} 表示重复5到10次都是匹配的
// NSString *pattern = @"德码西亚(66)?"; // ? 类似于Bool, 表示可有可无
// (66)? 表示66可有可无, 66? 表示最后一个6可有可无 ()表示整体, 优先
// NSString *pattern = @"德码西亚6*"; // * 表示 0 到 多次重复
NSString *pattern = @"\\w+"; // \w 表示数字/英文/中文/下划线, + 表示重复1到多次
// 正则表达式很容易出错, 因此要注意错误处理
NSError *error;
// OC中使用正则表达式 : NSRegularExpression
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
if (error) {
NSLog(@"正则表达式不正确");
}
// // 从content的指定范围字符串查找第一个匹配的内容
// NSTextCheckingResult *result = [expression firstMatchInString:content options:0 range:NSMakeRange(0, content.length)];
//
// // NSTextCheckingResult 正则匹配的结果
// if (result) {
// // NSTextCheckingResult 的range属性中记录了 匹配结果在原字符串中的位置
// NSLog(@"查找结果: %@", NSStringFromRange(result.range));
// } else {
// NSLog(@"没有查找到相关文本");
// }
NSArray <NSTextCheckingResult *> *resultArray = [expression matchesInString:content options:0 range:NSMakeRange(0, content.length)];
// 如果匹配不到结果, 仍然能返回数组, 但是元素个数为0
if (resultArray.count != 0) {
// 处理匹配结果
for (NSTextCheckingResult *result in resultArray) {
// 获取匹配到的结果文字
NSString *subString = [content substringWithRange:result.range];
NSLog(@"%@ : %@", subString, NSStringFromRange(result.range));
}
} else {
// 没有匹配结果
NSLog(@"匹配不到结果");
}
}
@end
实用知识:正则表达式的方法使用
最新推荐文章于 2024-10-28 13:53:13 发布