Утверждение соответствия XPath: использование точки - PullRequest
0 голосов
/ 13 июня 2018

Я использую XPath Match в утверждениях SoapUI для проверки моего XML-ответа.Я застрял с регулярным выражением - не могу проверить этот тег:

<bookValue>0.00</bookValue>

Мои совпадения XPath выглядят так:

matches(//bookValue, "^[0-9.]$")

Но это всегда возвращает мне «ложь».Может быть, есть проблема с символом точки?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Ваше регулярное выражение соответствует любой строке, содержащей один символ, который должен быть либо цифрой, либо точкой.Ваша ошибка не допускает повторение: оно должно быть "^[0-9.]+$".

(примечание, "." В квадратных скобках соответствует ".", Это не подстановочный знак).

Но обратите вниманиелучший способ проверить значение будет X castable as xs:decimal.Это, например, запрещает иметь несколько десятичных знаков.

0 голосов
/ 13 июня 2018

Ваше регулярное выражение неверно.Вместо этого попробуйте ниже

^[0-9]+\.[0-9]{2}$

Обратите внимание, что использование точки в квадратных скобках не подходит для вашего случая, поскольку [0-9.] будет соответствовать либо цифре, либо точке, а добавление +, так как [0-9.]+ может соответствовать чему-то вроде ...1.2.3.4. что, я думаю, не то, что вам нужно

PS Как правильно заметил @Michael Kay: точка внутри квадратных скобок соответствует только точке (.), а за ее пределами означает любой символ .Если вы хотите сопоставить символ точки за пределами квадратных скобок, вы должны использовать обратную косую черту в качестве escape-символа (\.)

...