具有可选十进制值的数字的正则表达式,固定在两个位置?
Regex for numbers with optional decimal value, fixed to two positions?
我需要知道字符串是否为以下格式:
- 任意数量的整数后跟:
- 可选组:
- 小数后跟两位数(如果提供小数则需要)
这允许任意数量的数字,我认为它的格式正确,允许由一个句点后跟两位数字组成的可选组,但由于某种原因,这不允许小数。也许小数点没有正确转义?
@"^[0-9]+(\.[0-9][0-9])?$"
我试过 @"^[0-9]+(\.[0-9][0-9])?$"
但 Xcode 抛出编译时警告:Unknown escape sequence \.
.
我建议使用 ^[0-9]+(?:\.[0-9]{2})?$
正则表达式(在 Objective C 中,我们需要转义正则表达式反斜杠)。
^
- 字符串开始
[0-9]+
- 任意位数
(?:\.[0-9]{2})?
- 可选组:
\.
- 文字点
[0-9]{2}
- 恰好两位数
$
- 字符串结尾
这是您可以使用的示例代码(在这种情况下它将报告匹配):
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!");
我需要知道字符串是否为以下格式:
- 任意数量的整数后跟:
- 可选组:
- 小数后跟两位数(如果提供小数则需要)
这允许任意数量的数字,我认为它的格式正确,允许由一个句点后跟两位数字组成的可选组,但由于某种原因,这不允许小数。也许小数点没有正确转义?
@"^[0-9]+(\.[0-9][0-9])?$"
我试过 @"^[0-9]+(\.[0-9][0-9])?$"
但 Xcode 抛出编译时警告:Unknown escape sequence \.
.
我建议使用 ^[0-9]+(?:\.[0-9]{2})?$
正则表达式(在 Objective C 中,我们需要转义正则表达式反斜杠)。
^
- 字符串开始[0-9]+
- 任意位数(?:\.[0-9]{2})?
- 可选组:\.
- 文字点[0-9]{2}
- 恰好两位数
$
- 字符串结尾
这是您可以使用的示例代码(在这种情况下它将报告匹配):
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!");