проверка правильности числа в XSD - PullRequest
0 голосов
/ 06 июня 2011

Мне нужно проверить, что число в XSD выглядит так: \ Д {} 0,15 (. \ Д \ г)? * * Тысяча один

Итак, до 15 цифр, за которыми следует необязательный десятичный знак, за которым следуют две цифры.

Подвох в том, что я хочу, чтобы он не принимал такие числа:

0.00
0
00000
000.00

Какой хороший способ сделать это и использовать его в нашем XSD?

Спасибо, Alex

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Вы очень точны в том, что хотите принять, но скорее неточны в том, что хотите отклонить.Это то, что вы хотите отклонить все, что имеет десятичное значение ноль, независимо от того, как оно написано?В этом случае решение будет иметь фасет <minExclusive value="0"/> рядом с фасетом шаблона.На самом деле, я не уверен, что вы не сможете достичь всего этого, используя фасеты totalDigits и FractionDigits.

1 голос
/ 06 июня 2011

Вы можете добавить к регулярному выражению отрицательный знак:

(?!0*(\.00)?)

дать:

^(?!0*(\.00)?$)\d{0,15}(.\d\d)?$

Обратите внимание, что это также приведет к отклонению пустой строки.

0 голосов
/ 07 июня 2011

Как насчет

[1-9]\d{0,14}(\.\d{2})?

Я бы также сказал, что подразумевает @MRAB. Ваше регулярное выражение, как есть, будет соответствовать пустой строке (ноль цифр и ноль "точка-цифра-цифра"). Для этого требуется наличие хотя бы одной цифры от 1 до 9, и что любое число с более чем одной цифрой должно иметь первую цифру от 1 до 9.

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