Java struts中的正则表达式
我正在使用struts中的正则表达式验证精度为(5,2)的小数位数,该精度可能为负数。 当我尝试运行此Java struts中的正则表达式,java,regex,struts,Java,Regex,Struts,我正在使用struts中的正则表达式验证精度为(5,2)的小数位数,该精度可能为负数。 当我尝试运行此^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$ 在java中,它运行良好。但是,struts中的相同表达式也出现了错误 org.apache.struts.validator.FieldChecks进程失败掩码验证属性inputCost:org.apache.oro.text.MalformedCachePatternException:无效表达式:^[-+]?[0-9]{1,
^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$
在java中,它运行良好。但是,struts中的相同表达式也出现了错误
org.apache.struts.validator.FieldChecks进程失败掩码验证属性inputCost:org.apache.oro.text.MalformedCachePatternException:无效表达式:^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$
嵌套重复*?+在表达式中
下面是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-9]{1,3}+(\.[0-9]{1,2})$
非常感谢您的任何输入。您的正则表达式在技术上是不正确的。在
{,}
限定符之后不能有+
,这就像说*+
或?*
(在正则表达式中,+
是一个特殊的元字符,意思是“一个或多个”,就像*
意思是“零个或多个”)
试一试
注意,
{1,3}+
只是一个{1,3}
a+
,在一个量词使该量词成为“所有格量词”之后,这意味着它不会回溯。但并非所有的口味都支持所有格量词。例如,请参见《啊哈》,谢谢@stema。我以前从未遇到过这种特殊的怪癖,我认为更常见的是(?>…)
构造(支持范围更广,但仍然不常见)。
^[-+]?[0-9]{1,3}(\.[0-9]{1,2})$