必须对模式进行验证输入XML标记,如下所示:
type : positive int / decimal
minimum length is 0
max length is 12(before decimal point)
fraction digits are optional if exist then precision must be 2.
这意味着允许正整数和十进制数(2位精度)。
所以可接受的值可以是:
无效值为:
我设计的模式是:
<xs:pattern value="|([0-9]){12}|([0-9]){12}[.][0-9][0-9]"/>
这种模式的问题是,它不允许字符串长度小于12的数字,它说“1234567890”是一个无效值,必须允许它!
答案 0 :(得分:3)
正则表达式模式\d{0,12}(\.\d{2})?
应该可以解决问题。
对模式的简短解释:
\d
是[0-9]
的简写。 \d{0,12}
表示\d
应出现0到12次。这是贪婪的,所以它会尝试尽可能多地匹配,最多12个。
\.\d{2}
表示一个点后跟两位数。
?
表示上一个项目可以发生0或1次。 (\.\d{2})
周围的括号是必要的,因为没有它们?
将仅适用于\d{2}
答案 1 :(得分:1)
但上述内容将允许:
.00
作为有效输入。也许类似于:(|\d{1,12}(\.\d{2})?)
允许null或至少一个数字会更好。