7

Javascript を使用して、ブラジルのお金 (名前は "Real") を含むいくつかのフォーム フィールドを検証する必要があります。形式は次のとおりです。

            0,01
            0,12
            1,23
           12,34
          123,45
        1.234,56
       12.235,67
      123.456,78
    1.234.567,89
   12.345.678,90
  123.456.789,01
1.234.567.890,12

私の正規表現の知識は弱いです。誰か助けてくれませんか?

4

3 に答える 3

15

これはあなたが望むことをしますか?

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

これは、「1 ~ 3 桁の数字で、その後に任意の数の 3 桁のグループが続き、その前にピリオドがあり、その後にコンマとさらに 2 つの数字が続く」という意味です。例にある先頭の空白を許可する場合は\s*、前に追加します。

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

EDIT : @ElRonnoco が指摘したように、上記の正規表現は先行ゼロを受け入れます (例: 010.100,00)。それらを禁止するには、この長いバージョンを使用できます。

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

EDIT 2上記の正規表現はすべて、単一の金額のみを含む文字列に一致します。それが意図されているかどうかは、質問からは明らかではありません。

編集 3小数部分がないか、10 進数が 1 桁しかない数値を許可するには、次のように変更します。

^\s*(?:[1-9]\d{0,2}(?:\.\d{3})*|0)(?:,\d{1,2})?$
于 2012-04-24T15:26:35.453 に答える
3

私はこの正規表現を試してみます:

\d+(?:\.\d{3})*?,\d{2}

それが言うことは次のとおりです。
- a まで数字を一致させます
。a. ドットの後に 3 桁の数字が表示されます (この手順は数回繰り返すことができます)
。またはコンマの後に 2 桁の数字が続く場合

EDIT: - コメントをありがとう、私は 正規表現を更新
した最初の値の制約を忘れていました

\d{1,3}(?:\.\d{3})*?,\d{2}
于 2012-04-24T15:24:36.053 に答える