XSD 模式中以分号分隔的双精度值列表问题

Issue in XSD pattern for semicolon separated list of double values

我有以下 XSD 模式来实现以分号分隔的双精度值列表

<xs:pattern value="([-+]?(\d+)?(.\d+)?(([eE][-+]?)?\d+)?|(NaN))(;(([-+]?(\d+)?(.\d+)?(([eE][-+]?)?\d+)?)|(NaN)))*"/>

这适用于此 data2type 网站的双精度值:

<test>123.456;+123.456;-1.234e56;-.45E-6;NaN</test>

但是为什么用任何其他字符替换点对这种模式有效?

<test>123f456;+123.456;-1.234e56;-.45E-6;NaN</test>

如何更改模式以使第二个示例无效?

也非常欢迎改进模式的建议! :)

谢谢!

您可能会发现这很有用:https://www.regular-expressions.info/xml.html 此外,我怀疑您的问题与 XSD 正则表达式语言无关,因此任何免费的在线正则表达式测试器都可以帮助您找到此类问题。

在正则表达式中,一个点代表任意字符的一次出现。如果你想指定一个 literal. (小数点)那么你需要用反斜杠转义它 \..