22.22、465.56、1424242.88 などの適切な通貨量のみを渡したい
私はこの正規表現を使用しています:
[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)
ただし、£25.55 などの記号は使用できます。正しい通貨形式で数値のみを強制するにはどうすればよいですか?
助けてくれてありがとう
22.22、465.56、1424242.88 などの適切な通貨量のみを渡したい
私はこの正規表現を使用しています:
[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)
ただし、£25.55 などの記号は使用できます。正しい通貨形式で数値のみを強制するにはどうすればよいですか?
助けてくれてありがとう
正規表現にアンカーを提供しておらず、エスケープしていないようです.
。たとえば、次のようになります。
var currencyNumbersOnly = /^\d+\.\d{2}$/;
壊す:
^
文字列の開始。
\d
数字(0-9)。
+
前のエンティティの1つ以上(\d+
つまり、「1つ以上の数字」を意味します)。
\.
文字通りの小数点。一部のカルチャでは、 !,
ではなくを使用することに注意してください。.
\d{2}
正確に2桁。
$
文字列の終わり。
これはそれほど厳密ではありません。たとえば、を許可します0000000.00
。また、許可しません2
(2.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
に。)