3

私はいたるところを見てきましたが、これに有効な解決策が見つかりません。

私は持っている:

- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {
    NSString *regEx = @"/^[1-9]\d*(\.\d+)?$/";
    NSRange r = [textField.text rangeOfString:regEx options:NSRegularExpressionSearch];

    if (r.location == NSNotFound) {
        UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Entry Error"
                                                     message:@"Enter only numbers or decimals"         
                                                    delegate:self 
                                           cancelButtonTitle:@"OK"
                                           otherButtonTitles:nil];
        [av show];

        return NO;
    } else {
        return YES;
    }
}

しかし、正規表現は機能しません。数字と小数のみを受け入れるようにしたい。バックスラッシュなどを二重にする必要がある正規表現とのコードに奇妙な違いがあることは知っていますが、それを理解できませんでした。

4

1 に答える 1

2

先頭の [1-9] とスラッシュを削除し、バックスラッシュをエスケープして、次のようにします。

 "^\\d*(\\.\\d+)?$"

Objective-C でこの正規表現を適切にエスケープするにはどうすればよいですか? を参照してください。

于 2012-10-07T03:03:39.210 に答える