0

私のテキストフィールドでは、正と負の両方の小数値を許可する必要があります。だから私は正規表現を使用しました

#define FLOAT_REGEX @"-[0-9]+(\.[0-9][0-9]?)?"

-(BOOL) checkForDecimalValue:(NSString *) string
{
NSPredicate *confidenceTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",FLOAT_REGEX]; 
return [confidenceTest evaluateWithObject:string]?YES:NO;
}

ただし、小数点なしで正の値のみを入力すると受け入れられません (例: 100、200 など)。正の値と整数も許可する必要があります。

4

2 に答える 2

3

行を次のように置き換えます。

#define FLOAT_REGEX @"^[-]?[0-9]*(.[0-9]*)?$"

これがあなたが望むものに役立つことを願っています. 有効期限はこちらから

于 2012-09-04T08:08:27.287 に答える
0

1 から 9 の範囲の数字の後にゼロ個以上の他の数字が続く:

^[1-9]\d*$

オプションの小数点の後に数字が続く数字を許可します。1 ~ 9 の範囲の数字の後に 0 個以上の他の数字が続き、オプションで小数点が続き、少なくとも 1 つの数字が続きます。

^[1-9]\d*(\.\d+)?$

ノート:

基本的に、文字列全体がパターンに一致する必要があることを意味する最初と最後への^andアンカー$

()?括弧内の全体の 0 または 1 に一致します

コンマを処理するための更新:

正規表現.には特別な意味があります - 任意の 1 文字に一致します。文字列内の文字列a に一致させるには、上記の正規表現の the の意味を使用.してエスケープする必要があります。したがって、代わりにコンマを使用する場合、パターンは単純です:.\.\.

^[1-9]\d*(,\d+)?$

カンマとピリオドを処理するためのさらなる更新

.数字のグループ,間および整数部分と小数部分の間を許可したい場合は、次を試してください。

^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$

つまり、これは 1 ~ 9 の範囲の数字の後に最大 2 つの数字が続き、0 個以上のピリオドのグループに続いて 3 つの数字が続き、オプションで以前のようにコンマと数字が続きます。

.数字の間の任意の場所を許可したい場合は、次を試してください。

^[1-9][\.\d]*(,\d+)?$

つまり、数字の 1 ~ 9 の後に 0 個以上の数字が続くか、オプションでカンマと 1 つ以上の数字が続くピリオドです。

ref :正規表現検証における 10 進数または数値

それが役立つことを願って、幸せなコーディング:)

于 2012-09-04T07:50:34.270 に答える