0

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

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

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

字符串格式的值,所以我想用正则表达式匹配它

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

Integer最大可以有 8 位。==> (-)?(\d){1,8}

十进制数可以表示为 (p,s),其中 p 是精度,s 是比例,然后描述与精度和比例有关的所有内容。最大小数位数为 8,最大精度为 31。数字的非小数部分最多为 23 位。 --> ?

数量这可以有 8 的最大比例和 31 的最大精度。--> ?

自定义十进制 数字可以表示为 (p,s),其中 p 是精度,s 是比例,然后描述与精度和比例有关的所有内容。如果您需要在小数部分存储超过八位的小数,请使用自定义小数。最大小数位数为 29,最大精度为 30。数字的非小数部分最大为 29 位。 --> ?

在此问题上的任何帮助或指导将不胜感激。

4

1 回答 1

2

整数

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

-?\d{1,8}

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

^-?\d{1,8}$

^匹配字符串的开头

$匹配字符串的结尾

十进制

尝试一些东西

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

这里的开放性问题是:

  • 是可选的吗,这意味着是否允许其中一些格式:1. 或 .1 或仅 1?

  • 什么分数分隔符.,两者兼而有之?

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

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

数量

它与十进制不同吗?

自定义小数

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

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

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

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

于 2011-08-03T09:44:49.420 回答