XPath匹配断言:使用点

时间:2018-06-13 08:08:00

标签: regex xpath soapui

我在SoapUI断言中使用XPath Match来验证我的XML响应。我坚持使用正则表达式 - 无法验证此标记:

<bookValue>0.00</bookValue>

我的XPath匹配如下所示:

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

但它总是让我回复&#34;假&#34;。也许点符号有问题?

2 个答案:

答案 0 :(得分:1)

您的正则表达式不正确。请尝试以下

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

请注意,在方括号内使用点不适合您的情况,因为[0-9.]会匹配数字或点,而+添加[0-9.]+可能会匹配...1.2.3.4.之类的内容我想这不是你想要的

P.S。正如@Michael Kay正确注意到的那样:方括号内的点只匹配点(.),而在外面则表示任何字符。如果要匹配方括号外的点字符,则需要使用反斜杠作为转义符号(\.

答案 1 :(得分:1)

您的正则表达式匹配包含单个字符的任何字符串,该字符必须是数字或点。你的错误是不允许重复:它应该是"^[0-9.]+$"

(注意,&#34;。&#34;在方括号内匹配&#34;。&#34;,它不是通配符)。

但请注意,验证该值的更好方法是X castable as xs:decimal。例如,不允许有几个小数点。