web-dev-qa-db-ja.com

お金のための正規表現

お金の価値を維持するためにasp:TextBoxがあります。つまり、「1000」、「1000,0」、「1000,00」です(ロシアの標準ではコンマが区切り文字です)。

適切なasp:RegularExpressionValidatorに使用するValidationExpressionは何ですか?

\d+\,\d{0,2}を試しましたが、10進数のない数値は使用できません。ちょうど「1000」。

15
abatishchev
\d+(,\d{1,2})?

10進数がある場合にのみカンマを許可し、カンマをまったく許可しません。疑問符は{0,1}と同じ意味であるため、\d+の後には、インスタンスがゼロ(つまり何もない)またはインスタンスが1つあります。

,\d{1,2}

ヘレンが正しく指摘しているように、次のように、キャプチャしないグループを使用するだけで十分です。

\d+(?:,\d{1,2})?

追加の?:は、括弧が疑問符で使用するために,\d{1,2}部分をグループ化することのみを目的としているが、これらの括弧内で何が一致したかを覚えておく必要がないことを意味します。これは、正規表現エンジンの作業が少なくなることを意味するため、パフォーマンスが向上します。

29
balpha

お金の検証には、この非常にリベラルな正規表現を使用します。

new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$");

$ 0、0、(0.0000)、. 1、.01、.0001、$。1、$。01、$。0001、($。1)、($ .01)、$(。0001 )、0.1、0.01、0.0001、1。、1111.、1,111。、1、1.00、1,000.00、$ 1、$ 1.00、$ 1,000.00、$ 1.0000、$ 1.0000、$ 1,000.0000、-1、-1.00、-1,000.00、-$ 1 -$ 1.00、-$ 1,000.00、-$ 1、-$ 1.00、-$ 1,000.00、$-1、$-1.00、$-1,000.00、$(1)、$(1.00)、$(1,000.00)、$(1)、 $(1.00)、$(1,000.00)、($ 1)、($ 1.00)、($ 1,000.00)

7
Jade Ohlhauser
3
Hardwareguy

私はこれをjavascriptで使用しました:c#であなたのために役立つかもしれません

var entered = '10.00';
var regex = /^\d+(?:\.\d{2})?$/; // starts with N digits optional ".\d\d"
console.log(entered.match(regex));
3
Mike Graf