1. ホーム
  2. regex

[解決済み] 米国通貨RegExの "ベスト "は何か?

2022-03-15 20:45:04

質問

currency regex で検索すると、以下のようなものが出てきます。 多くの結果 .

選ぶ際の問題点は、正規表現はエッジケースをすべてテストしないと検証しにくいということです。どなたか米国通貨の正規表現をお持ちで、それが 徹底的なテスト ?

私の唯一の要件は、マッチした文字列が米国の通貨であり、次のようにパースされることです。 System.Decimal :

[ws][符号][digits,]digits[.fractional-digits][ws]です。

角括弧([ および ])内の要素はオプションである。
各要素の説明は次のとおりです。

要素の説明
ws オプションの空白文字。
sign オプションの符号です。
digits 0 から 9 までの数字列。
文化固有の千区切り記号。
.                   文化圏特有の小数点記号。
fractional-digits 0 から 9 までの数字列。

解き方は?

Regex Buddyのメーカーが提供しているものを紹介します。 これらはライブラリから取得したものなので、十分にテストされていると確信しています。

数字 通貨金額(セントは必須) オプションで千単位の区切り文字、2桁の分数必須

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

数字 通貨単位(セントは任意) オプションで千の区切り文字、オプションで2桁の分数

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

数字 通貨量 US & EU (セントはオプション) 米国式123,456.78表記と欧州式123.456,78表記が使用可能。 オプションで千単位の区切り文字、オプションで2桁の端数を使用できます。

Match; JGsoft:
^[+-]?[0-9]{1,3}(?:[0-9]*(?:[.,][0-9]{2})?|(?:,[0-9]{3})*(?:\.[0-9]{2})?|(?:\.[0-9]{3})*(?:,[0-9]{2})?)$