1

22.22、465.56、1424242.88 などの適切な通貨量のみを渡したい

私はこの正規表現を使用しています:

[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)

ただし、£25.55 などの記号は使用できます。正しい通貨形式で数値のみを強制するにはどうすればよいですか?

助けてくれてありがとう

4

1 に答える 1

1

正規表現にアンカーを提供しておらず、エスケープしていないようです.。たとえば、次のようになります。

var currencyNumbersOnly = /^\d+\.\d{2}$/;

壊す:

  • ^文字列の開始。

  • \d数字(0-9)。

  • +前のエンティティの1つ以上(\d+つまり、「1つ以上の数字」を意味します)。

  • \.文字通りの小数点。一部のカルチャでは、 !,ではなくを使用することに注意してください。.

  • \d{2}正確に2桁。

  • $文字列の終わり。

これはそれほど厳密ではありません。たとえば、を許可します0000000.00。また、許可しません22.00代わりに必要です)。また、通貨の数字について話すときでさえ、私たちは常に数百に下がるだけではないことに注意してください。たとえば、銀行の為替レートは、小数点の右側のいくつかの場所で発生する可能性があります。(たとえば、xe.comによると、現在、1米ドル= 0.646065ポンド)。

ジャックが質問へのコメントで指摘しているように、負の数を許可したい場合があるので、の後に-?(0または1-文字)を入れるの^が適切な場合があります。

var currencyNumbersOnly = /^-?\d+\.\d{2}$/;

更新:完全な正規表現が表示されるようになったので、次のようにします。

var currencyNumbersOnly = /^\d+\.\d{2}(?:[^0-9a-zA-Z\s\S\D]|$)/;

最後にそのビットで何をしているのかわかりません。特に、そうでない場合とそうでない場合0-9 限り、単一の文字を許可すると言われているようです\D。「で\Dはない0-9」という意味で、何かがそれにどのように一致するかを理解するのは難しいです。(そして同様にそして\sそこ\Sに。)

于 2013-02-18T10:02:01.460 に答える