0

次の形式の通貨の正規表現を教えてください。

1000 - valid
1,000 - valid
1,000.00 or 1000.00 - valid.

つまり、数値には 3 桁ごとにコンマ (,) 区切り記号が含まれる場合と含まれない場合があります。

数値にはドット (.) が含まれる場合と含まれない場合があります。ドット (.) が含まれる場合は、小数点以下に少なくとも 1 つの数字を表示する必要があります。

最後に、数字のみにする必要があります。私の質問を明確にする必要がある場合は、親切に提案してください。

4

2 に答える 2

3
/^\d{1,3}(?:(?:,\d{3})*|(?:\d{3})*)(?:\.\d{1,2})?$/

「1 桁と 3 桁の間、コンマで始まる任意の数の 3 桁のグループ、またはコンマで始まる任意の数の 3 桁のグループ (2 種類のグループの混在は許可されない)、その後、任意の 1 つのグループまたはドットで始まる 2 桁の数字。」

注:この正規表現は、質問で概説されている基準に対して文字列全体を検証することを前提としています。長い文字列でそのような数値を検索するために使用する場合は、式の最初と最後から^andを削除する必要があります。$

于 2012-09-17T07:10:46.033 に答える
1

そのようなものはうまくいくはずです: (,?\d{3})+(\.\d{2})?. 正規表現は、オプションのコンマが前に付いた 3 桁のシーケンスとの一致を試み、最後にオプションの小数点と 2 桁の数字が続きます。

詳細については、このチュートリアルを参照してください。

編集:以下のコメントによると、上記の正規表現は失敗する可能性があります。最初にこの正規表現を使用することをお勧めします:^[\d][\d.,]+$数字、1000、10 進数の区切り記号のみを使用するようにします。この正規表現は、数値が数字で始まり、他のものではないことも確認します。ほとんどの場合、1 つの正規表現ですべてを実行できますが、非常に複雑になる可能性が高くなります。

于 2012-09-17T07:08:43.660 に答える