正则表达式语法
^ 以....开头 ^[0-9]{2} 以两个数字开头
$ 以....结尾 .{2} 以任意的两个字符结尾
. 任意字符
\w 用来匹配字母 数字 或 下划线
\d 0 - 9 的数字
\s 匹配空白字符 空格 回车 制表符
\b 匹配单词的开始和结尾 \bcom\b. 获取到的就是com
ab+ a后面跟着一个或若干个b
ab* a后面跟着零个或者若干个b
ab? a后面跟着零个或一个b
a?b+$ 结尾有零个或一个a后面跟着一个或多个b
{}重复次数
[0-9]{3} 有三个数字
[0-9]{3,5}有三到五个数字
| 或 [a|b]cd. acd. bcd [ab] 相当于[a|b]
a.[0-9] 表示a后面跟着任意字符和一个数字
[^a-z]表示不希望出现 a-z
+?表示尽可能少的匹配字符
实例
验证身份证
- (BOOL)verifyIDCard : (NSString *)IDCard{
if (IDCard.length <= 0) {
return NO;
}
NSString *identityRegex = @"^(\\d{14}|\\d{17})(\\d|[X])$";
NSPredicate *predicata = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",identityRegex];
return [predicata evaluateWithObject:IDCard];
}
尽可能少的匹配字符
NSString *string = @"this is a demo text,too!";
NSRange range = [string rangeOfString:@"t.*?t" options:NSRegularExpressionSearch];
NSLog(@"%@",[string substringWithRange:range]); // this is a demo t
NSRange range2 = [string rangeOfString:@"t.*t" options:NSRegularExpressionSearch];
NSLog(@"%@",[string substringWithRange:range2]); // this is a demo text,t
网友评论