struts中的正则表达式

时间:2012-01-31 12:35:16

标签: java regex struts

我正在使用精确(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>

非常感谢任何投入。

1 个答案:

答案 0 :(得分:2)

你的正则表达式在技术上是不正确的。在+限定符之后,您不能拥有{,},就像说.*+.?*+是正则表达式中的特殊元字符,意思是“一个或更多“,就像*表示”零或更多“)。

尝试

^[-+]?[0-9]{1,3}(\.[0-9]{1,2})$

请注意{1,3}+只是{1,3}