刚刚面临无法编写满足我需求的良好正则表达式的问题。我以前从未使用过正则表达式,所以这对我来说并不是一个大惊喜。
以下是我要验证的良好输入示例:
- 01
- 00:01
- 01:02:03
- 01:02:03:04 - 最多 3 个冒号
- 123,456,789 - 最多两个逗号
- 40000035
- 1:2:06
以下是不好的:
- ,3234
- 134,2343,333
- 000:01:00
- :01:03:00
- :01
- 01:
首先,我尝试编写一个至少涵盖所有冒号的情况,这就是我所拥有的:
NSUInteger numberOfMatches = -1;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([([0-9]{1,2}):]{1,3})([0-9]{1,2})"
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error) {
NSLog(@"error %@", error);
}
numberOfMatches = [regex numberOfMatchesInString:stringToValidate
options:0
range:NSMakeRange(0, [stringToValidate length])];
我也很好奇 NSRegularExpression 是否有任何方法可以在某种数组中提取经过验证的子字符串?!
例如:
12:23:63 --- 将被验证并且数组将包含 [12,23,63]
234 --- 将被验证并且数组将包含 [234]
123,235,653 --- 将被验证并且数组将包含 [123235653]
基本上冒号分隔的输入将作为单独的值,其他所有内容将作为一个值