Я проверяю десятичные знаки с точностью (5,2), которые могут иметь отрицательные числа, используя регулярное выражение в распорках. Когда я пытаюсь запустить этот ^[-+]?[0-9]{1,3}+(\.[0-9]{1,2})$
в java, он отлично работает. Но одно и то же выражение в стойках бросается ниже ошибки.Регулярное выражение в строках
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>
Любые материалы приветствуются.
«+» после квантификатора делает квантификатор «притяжательным квантификатором», что означает, что он не отступает. Но не все вкусы поддерживают притяжательные кванторы. См. здесь, в [Perlretut] (http://perldoc.perl.org/perlretut.html#Possessive-quantifiers) – stema
Ahh, спасибо @stema. Я никогда не сталкивался с этим особым причудом раньше, я думаю, что более общим для этого является конструкция '(?> ...)' (немного более широко поддерживается, хотя все еще не распространена). –