用于验证数据类型(如金额,小数,自定义小数)的正则表达式?

时间:2011-08-03 09:06:05

标签: regex gwt gwt-2.2-celltable

验证所需的Decimal,Amount,CustomDecimal数据类型的正则表达式是什么?

我的xml记录包含少量字符串格式的值,数据类型为Decimal,Amount,CustomDecimal数据类型。

我正在使用GWT celltable:EditTextCell Parsed xml设置为表格中的单元格。 现在我想验证具有相关数据类型的单元格。

字符串格式的值,因此我希望将其与正则表达式匹配

以下是我对不同数据类型的正则表达式的标准:

整数最高等级为8. ==> ( - )?(\ d){1,8}

十进制数字可以表示为(p,s),其中p是精度,s是比例 然后在精度和规模方面描述一切。可以有一个 最大刻度为8,最大精度为31.非小数部分 该号码最多可包含23位数字。 的 - >吗

金额最大比例为8,最大精度为31. - >吗

自定义小数 数字可以表示为(p,s),其中p是精度,s是标度 然后在精度和规模方面描述一切。使用自定义 如果您需要存储超过八位数的小数,则为十进制 分数部分。最大刻度可以为29,最大精度为30。 数字的非小数部分最多可包含29位数。  的 - >吗

对此事项的任何帮助或指导将不胜感激。

1 个答案:

答案 0 :(得分:2)

<强>整数

只要您不想将内容包含在捕获组中,就不需要括号。所以我认为这对你没问题:

-?\d{1,8}

哦,你必须使用锚来确保完整的字符串与你的模式匹配,而不仅仅是一个子字符串。

^-?\d{1,8}$

^匹配字符串的开头

$匹配字符串

的结尾

<强>十进制

尝试一下

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

这里的开放性问题是:

  • 是可选的,这意味着某些格式是 允许:1。或.1或仅1?

  • 什么分数分隔符.,或两者?

如果你想让一个部分成为可选部分,请把它放到一个非捕获组中,然后在它后面放一个?(?:Pattern)?

要允许两个分隔符都使用像[.,]这样的字符类而不是\.部分。

<强>量

与Decimal不同吗?

自定义小数

如果我理解它是正确的,那么它的最大长度可以是30.并且在点之前和之后的两个部分可以是最大值29.我假设当我的非小数部分是29时,那么我的分数可以是最大值1

所以我会沿着十进制正则表达式保留它并使用前瞻断言添加额外的长度检查(希望你的正则表达式引擎支持它)

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

这个先行断言(?=^.{1,30}$)首先检查整个字符串是否长度在1到30个字符之间,如果为真,则检查模式。