gpt4 book ai didi

objective-c - 在 Cocoa for osx 中使用正则表达式进行用户输入验证

转载 作者:行者123 更新时间:2023-12-03 17:23:10 24 4
gpt4 key购买 nike

刚刚面临无法编写一个好的正则表达式来满足我的需求的问题。我以前从未使用过正则表达式,所以这对我来说并不奇怪。

以下是我正在尝试验证的良好输入示例:

  • 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]

基本上,冒号分隔的输入将作为单独的值,其他所有内容将作为一个值

最佳答案

为了实现您想要的目的,我建议您对每种情况都进行一次验证。

验证

冒号:

^\d{1,2}(?::\d{1,2}){0,2}(?::\d{2})?$

逗号:

^\d{3}(?:,\d{3}){0,2}$

只是数字:

^\d+$

然后假设您通过了每个案例的验证,请使用其他方法进行数据提取。

数据提取

冒号

逗号:

只是数字:

  • 嗯,这里已经有您需要的内容,因此无需进行任何更改。

关于objective-c - 在 Cocoa for osx 中使用正则表达式进行用户输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com