XPath 匹配断言:使用点

XPath match assertion: using a dot

我在 SoapUI 断言中使用 XPath 匹配来验证我的 XML 响应。我受困于正则表达式 - 无法验证此标签:

<bookValue>0.00</bookValue>

我的 XPath 匹配如下所示:

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

但它总是return我"false"。也许点符号有问题?

您的正则表达式不正确。试试下面的方法

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

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

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

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

(注意,方括号内的“.”对应“.”,不是通配符)

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