1

お金に関連する数値で機能する正規表現が必要です。現在、私はこれを使用しています:

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

私のテスト セットには、有効であると宣言したい次の数値が含まれています。上記の正規表現を使用して検証された場合の検証結果についても、各番号について言及しました。

123456789012345 //valid
123456789012345.34 //valid

123,456,789,012,345 //valid
123,456,789,012,345.34 //valid

-123,456,789,012,345 //not valid
-123,456,789,012,345.34 //not valid

負の値を除くすべてで機能するようです。

第二に、最初に a を含む値で機能するよう$です。次の数値が有効になるようにUSD$、 だけではなく、最初に受け入れるように変更できますか?:$

USD$123,456,789,012,345
USD$123,456,789,012,345.34
4

2 に答える 2

3

負の数にも一致し、のUSD$ 代わりに一致するには$、を
に変更できます。^\$?^(?:USD\$)?-?

于 2013-02-17T17:19:38.633 に答える
1

実際には、かなり簡単です。

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

私は次のものに置き換えまし\$?た:

(?:(?:USD)?\$)?- これはオプションの - 記号に一致し、オプション$USDその前に

そして追加しました:

(?:-)?-- これは、最初の桁の前のオプションに一致します

{0,1}また、末尾の を に省略しました?。これは同じことです。

正規表現のデモ

Bergi のコメントによると、いくつかの混乱を解消したい場合は、少し単純化できます。

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

他の非捕獲グループには触れたくありませんでした。

于 2013-02-17T17:20:37.187 に答える