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
。例如,不允许有多个小数点。
我在 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
。例如,不允许有多个小数点。