Регулярное выражение в стойках - PullRequest
3 голосов
/ 31 января 2012

Я проверяю десятичные разряды с точностью (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>

Любые предложения приветствуются.

1 Ответ

2 голосов
/ 31 января 2012

Ваше регулярное выражение технически неверно.Вы не можете иметь + после квалификатора {,}, это все равно, что сказать .*+ или .?* (+ - это специальный метасимвол в регулярном выражении, означающий «один или несколько», так же как * означает"ноль или больше").

Попробуйте

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

Обратите внимание, что {1,3}+ это просто {1,3}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...