我正在使用精确(5,2)验证小数位,这可以使用struts中的常规表达式来显示负数。
当我尝试运行此^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$
时
在java中它工作正常。但是,struts中的相同表达式会抛出错误。
org.apache.struts.validator.FieldChecks processFailure mask validation failed for property inputCost: org.apache.oro.text.MalformedCachePatternException: Invalid expression: ^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$
Nested repetitions *?+ in expression
以下是validation.xml的代码片段。
<field property="inputCost" depends="double,mask">
<arg position="0" key="label.inputCost"/>
<msg name="mask" key="label.inputCost.mask"/>
<var>
<var-name>mask</var-name>
<var-value>^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$</var-value>
</var>
</field>
非常感谢任何投入。
答案 0 :(得分:2)
你的正则表达式在技术上是不正确的。在+
限定符之后,您不能拥有{,}
,就像说.*+
或.?*
(+
是正则表达式中的特殊元字符,意思是“一个或更多“,就像*
表示”零或更多“)。
尝试
^[-+]?[0-9]{1,3}(\.[0-9]{1,2})$
请注意{1,3}+
只是{1,3}
。