我需要知道字符串是否采用以下格式:
这允许任意数量的数字,我认为它的格式正确,允许包含句点后跟两位数的可选组,但由于某种原因,这不允许使用小数。也许十进制没有被适当地转义?
@"^[0-9]+(\\.[0-9][0-9])?$"
我尝试@"^[0-9]+(\.[0-9][0-9])?$"
但是Xcode会抛出编译时警告:Unknown escape sequence \.
。
答案 0 :(得分:6)
我建议使用^[0-9]+(?:\\.[0-9]{2})?$
正则表达式(在Objective C中,我们需要转义正则表达式反斜杠)。
^
- 字符串开始[0-9]+
- 任意位数(?:\\.[0-9]{2})?
- 可选组:
\\.
- 字面点[0-9]{2}
- 正好两位数$
- String end 以下是您可以使用的示例代码(在这种情况下会报告匹配):
NSString *pattern = @"^[0-9]+(?:\\.[0-9]{2})?$";
NSString *string = @"12345.20";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSRange textRange = NSMakeRange(0, string.length);
NSRange matchRange = [regex rangeOfFirstMatchInString:string options:NSMatchingReportProgress range:textRange];
// Did we find a matching range
if (matchRange.location != NSNotFound)
NSLog (@"YES! It is matched!");
else
NSLog (@"NO MATCH!");