Objective c RegEx(replaceMatcheInstalling)不起作用

Objective c RegEx(replaceMatcheInstalling)不起作用,objective-c,regex,Objective C,Regex,为什么这个带有replaceMatcheInstalling的正则表达式只返回“+”而不是“+123” 谢谢 正则表达式的问题是^([+0]*)\\d*$也与\d*匹配,这意味着它也会被替换(您可能认为它只会替换捕获组,但显然不是这样)。因此,您基本上是替换与上述模式匹配的任何字符串(包括任何尾随数字),在您的示例中,这是整个数字 我在回答中使用的是a 向前看基本上意味着您要查找零个或多个+或0,后面是零个或多个数字,不包括匹配中的数字。所以你只替换零和加号,而不是后面的数字 NString *

为什么这个带有replaceMatcheInstalling的正则表达式只返回“+”而不是“+123”

谢谢

正则表达式的问题是
^([+0]*)\\d*$
也与
\d*
匹配,这意味着它也会被替换(您可能认为它只会替换捕获组,但显然不是这样)。因此,您基本上是替换与上述模式匹配的任何字符串(包括任何尾随数字),在您的示例中,这是整个数字

我在回答中使用的是a

向前看基本上意味着您要查找零个或多个
+
0
,后面是零个或多个数字,不包括匹配中的数字。所以你只替换零和加号,而不是后面的数字

NString *phoneNumberCleaned = [NSString stringWithFormat:@"++00123"];

NSString *strRegExPhoneNumberPrefixWrong = @"^([+0]*)\\d*$";

NSRegularExpression *regEx = [NSRegularExpression regularExpressionWithPattern:strRegEx options:0 error:nil];

[regEx replaceMatchesInString:phoneNumberCleaned options:0 range:NSMakeRange(0, [phoneNumberCleaned length]) withTemplate:@"+"];

return phoneNumberCleaned;
NSString *string = @"++00123";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression 
   regularExpressionWithPattern:@"^[+0]+(?=\\d*)" 
                         options:NSRegularExpressionCaseInsensitive 
                           error:&error];

NSString *modifiedString = [regex 
           stringByReplacingMatchesInString:string 
                                    options:0 
                                      range:NSMakeRange(0, [string length]) 
                               withTemplate:@"+"];
return modifiedString;
^[+0]+(?=\\d*)$