このようなものが動作するはずです:
/^((?:\d{1,3}[,\.]?)+\d*)$/
これは以下に一致します:
^ - Start of string
( - Capture the following:
(?:
\d{1,3} - One to three digits
[,\.]? - And an optional separator (comma or period)
)+ - One or more times
\d* - Zero or more digits
)
$ - End of string
セパレーターの左側 (存在する場合) にすべてを繰り返し一致させることによって機能し\d*
、オプションの通貨の端数を取得する必要があります。
すべてのテストに合格することがわかります。
編集:更新された正規表現は次のようになります。
^((?:\d\.\d{3}\.|\d{1,3}\.)?\d{1,3},\d{1,2})$
次のいずれかに一致する場所:
\d\.\d{3}\.
- 1 桁、ピリオド、3 桁、ピリオド、OR
\d{1,3}\.
- 1 桁と 3 桁、ピリオド
- 上記のいずれでもない (理由により
?
)
次に、一致します。
\d{1,3},
- 1 ~ 3 桁の数字とコンマ、その後に続く
\d{1,2}
- 1 桁または 2 桁