-4

10 進数の例を含む 0 から 100 までの任意の数値に一致する正規表現が必要です。

4

3 に答える 3

2

先頭の記号を許可する必要があると仮定すると、次のように書くのが最善です

if ( /(?<![-+.\d])([-+]?\d+(?:\.\d*)?(?![-+.\d])/ and $1 >= 0 and $1 <= 100 ) { .. }

しかし、正規表現の使用を余儀なくされている場合は、

if ( /(?<![-+.\d])(([-+]?(?:100|\d\d)(?:\.\d*)?(?![-+.\d])/ ) { .. }

これらのパターンは、必要以上に複雑になる可能性があります。これは、文字列内の任意の場所に数値を表示できるためです。文字列全体をチェックして基準に一致するかどうかを確認するだけの場合は、はるかに短くなる可能性があります

于 2012-08-31T11:21:03.870 に答える
0

編集済み!!!

この問題は、私が最初に気付いたよりもはるかに困難でした。ある程度の努力を払って、エラーのない新しい正規表現を作成しました。楽しみ。

/(?<!\d)(?<!\.)(100(?:(?!\.)|(?:\.0*+|\.))(?=\D)|[0-9]?[0-9](?:\.|\.[0-9]*+)?(?=[\D]))/

このパターンは$1でキャプチャされます

于 2012-09-03T13:11:45.390 に答える
0

これはうまくいきます:

(100(\.0+))|([0-9]{1,2}(\.[0-9]+)?)

"100" (オプションのドットと 1 つ以上のゼロ) または 1 つまたは 2 つの数字に一致し、オプションでドットと少なくとも 1 つの数字が続きます。

于 2012-08-31T11:14:23.003 に答える