. 匹配除“\r\n”之外的任何单个字符
[ ]包含,默认是一个字符长度 “[a-d]“:表示一个字符串包含小写的’a'到’d'中的一个(相当于”a|b|c|d”或者”[abcd]“)
^开始 “^one”:表示所有以”one”开始的字符串
$ 结尾 “a dog$”:表示所以以”a dog”结尾的字符串
?,*,+,\d,\w 都是等价字符
?等价于匹配长度{0,1} “ab?”:表示一个字符串有一个a后面跟着[0,1]b
*等价于匹配长度{0,} “ab*”:表示一个字符串有一个a后面跟着[0,+∞]b
+等价于匹配长度{1,} “ab+”:表示一个字符串有一个a后面跟着[1,+∞]b
练习:“a?b+$”:表示在字符串的末尾有零个或一个a跟着一个或几个b
\d等价于[0-9] 0至9数字
\D等价于[^0-9] 非0至9数字 在方括号里用’^'表示不希望出现的字符,’^'应在方括号里的第一位
\w等价于[A-Za-z_0-9] 26个大写字母、26个小写字母和0至9数字
\W等价于[^A-Za-z_0-9]
() 域段
[^] 不包含,默认是一个字符长度
{n,m} 匹配长度 “ab{3,4}”:表示一个字符串有一个a跟着3到4个b; “ab{4}”:表示一个字符串有一个a跟着4个b
| 或 “(a|bcd)ef”:表示”aef”或”bcdef”
\ 转义
“\num” 其中num是一个正整数。表示”\num”之前的字符出现相同的个数 “(.)\1″:表示两个连续的相同字符 ;“10\{1,2\}” : 表示数字1后面跟着1或者2个0 (“10″,”100″)
, 分割
例句:
字符串;tel:086-0666-88810009999
原始正则:"^tel:[0-9]{1,3}-[0][0-9]{2,3}-[0-9]{8,11}$"
速记理解:开始 "tel:普通文本"[0-9数字]{1至3位}"-普通文本"[0数字][0-9数字]{2至3位}"-普通文本"[0-9数字]{8至11位} 结束"
等价简写后正则写法:"^tel:\d{1,3}-[0]\d{2,3}-\d{8,11}$"
+ (BOOL)checkTelNumber:(NSString *) telNumber
{
NSString *pattern = @"^1+[3578]+\\d{9}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:telNumber];
if (telNumber.length != 11) {
return NO;
}
return isMatch;
}
- (BOOL)containsChineseLetterNum
{
NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9\u4e00-\u9fa5]+" options:NSRegularExpressionAllowCommentsAndWhitespace error:nil];
NSArray *result = [regex matchesInString:self options:NSMatchingReportCompletion range:NSMakeRange(0, self.length)];
NSMutableString * newStr = [[NSMutableString alloc]initWithCapacity:0];
for(NSTextCheckingResult * item in result)
{
[newStr appendString:[self substringWithRange:[item rangeAtIndex:0]]];
}
return [self isEqualToString:newStr];
}
{
NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9\u4e00-\u9fa5]+" options:NSRegularExpressionAllowCommentsAndWhitespace error:nil];
NSArray *result = [regex matchesInString:self options:NSMatchingReportCompletion range:NSMakeRange(0, self.length)];
NSMutableString * newStr = [[NSMutableString alloc]initWithCapacity:0];
for(NSTextCheckingResult * item in result)
{
[newStr appendString:[self substringWithRange:[item rangeAtIndex:0]]];
}
return [self isEqualToString:newStr];
}