0

我正在尝试获取以下正则表达式以仅从字母数字字符输入框中获取字母,但是它始终返回完整的字符串,而不是任何 AZ 字母。

我究竟做错了什么?

它只需要抓取所有的字母。没有奇怪的字符也没有数字,只有 AZ 并将其放入一个字符串中供我以后使用。

// A default follows
NSString *TAXCODE = txtTaxCode.text;

// Setup default for taxcode
if ([TAXCODE length] ==0)
{
    TAXCODE = @"647L";
}


NSError *error = NULL;
NSRegularExpression *regex;

regex = [NSRegularExpression regularExpressionWithPattern:@"/[^A-Z]/gi" 
                                                  options:NSRegularExpressionCaseInsensitive
                                                    error:&error];

NSLog(@"TAXCODE = %@", TAXCODE);
NSLog(@"TAXCODE.length = %d", [TAXCODE length]);


NSLog(@"STC (before regex) = %@", STC);


STC = [regex stringByReplacingMatchesInString:TAXCODE
                                      options:0
                                        range:NSMakeRange(0, [TAXCODE length])
                                 withTemplate:@""];
NSLog(@"STC (after regex) = %@", STC);

我的调试输出如下:

税码 = 647L

TAXCODE.length = 4

STC(正则表达式之前)=

STC(正则表达式后)= 647L

4

2 回答 2

1

我认为您需要在正则表达式中删除 perl 语法。使用 @"[^AZ]" 作为匹配字符串。

于 2011-03-18T15:32:09.853 回答
1

如果你只在一端有字母,那么你可以使用。

 NSString *TAXCODE =@"647L";
NSString *newcode =  [TAXCODE stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];

如果混合了字母,那么您可以获得一个可以使用的数组。

NSString *TAXCODE =@"L6J47L";
NSArray *newcodeArray =  [TAXCODE componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
于 2011-03-18T16:23:58.557 回答