0

検証に必要なDecimal、Amount、CustomDecimalデータ型の正規表現とは何ですか?

私のxmlレコードには、データ型がDecimal、Amount、CustomDecimalデータ型の文字列形式の値がいくつか含まれています。

私はGWTセルテーブルを使用しています:テーブル内のセルに設定されたEditTextCell解析済みxml。次に、関連するデータ型でそのセルを検証します。

文字列形式の値なので、正規表現と一致させたい

以下は、さまざまなデータ型の正規表現の基準です。

整数最大スケールは8です。==> (-)?(\ d){1,8}

10進数数値は(p、s)として表すことができます。ここで、pは精度、sはスケールであり、精度とスケールに関してすべてを記述します。最大スケールは8、最大精度は31です。数値の非小数部分は最大23桁にすることができます。 ->?

これは、最大スケール8、最大精度31にすることができます。- >?

カスタム10進 数数値は(p、s)として表すことができます。ここで、pは精度、sはスケールであり、精度とスケールに関してすべてを記述します。小数部に8桁を超える小数を格納する必要がある場合は、カスタム小数を使用します。最大スケールは29、最大精度は30です。数値の小数部分は最大29桁です。 ->?

この件に関するヘルプやガイダンスをいただければ幸いです。

4

1 に答える 1

2

整数

キャプチャグループにコンテンツを含めたくない限り、角かっこは必要ありません。だから私はこれがあなたにとっては問題ないと思います:

-?\d{1,8}

ああ、あなたは完全な文字列が部分文字列だけでなくあなたのパターンと一致することを確実にするためにアンカーを使わなければなりません。

^-?\d{1,8}$

^文字列の先頭に一致します

$文字列の終わりに一致します

10進数

一緒に何かを試してみてください

^-?\d{1,23}\.\d{1,8}$

ここでの未解決の質問は次のとおりです。

  • オプションのものはありますか?つまり、これらの形式の一部が許可されます:1.または.1または1つだけですか?

  • どの分数区切り文字.または,その両方ですか?

パーツをオプションにしたい場合は、それを非キャプチャグループに入れ、?その後ろに置きます((?:Pattern)?

両方の区切り文字を許可する[.,]には、パーツの代わりにこのような文字クラスを使用し\.ます。

Decimalとは違いますか?

カスタム10進数

私がそれを正しく理解していれば、最大長は30になる可能性があります。また、ドットの前後の部分は両方とも最大29になる可能性があります。非小数部分が29の場合、小数は最大1になると思います。

だから私はそれを10進数の正規表現に沿って保持し、先読みアサーションを使用して追加の長さチェックを追加します(あなたの正規表現エンジンがそれをサポートすることを願っています)

(?=^.{1,30}$)^-?\d{1,23}\.\d{1,8}$

この先読みアサーション(?=^.{1,30}$)は、最初に文字列全体の長さが1〜30文字かどうかをチェックし、trueの場合はパターンをチェックします。

于 2011-08-03T09:44:49.420 に答える