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