猿问

Maven 构建在 xsd 模式验证中失败

我有一个模式:(?!^0000000000000000000)([0-9]{20})应该验证所有长度= 20不包括的数字0000000000000000000


我正在编写单元测试:


 String pattern = "(?!^0000000000000000000)([0-9]{20})";

 String input  = "0000000000000000000";

 String input1 = "0000000000000000000123123";

 String input2 = "123123"

 String input3 = "1231231244245343604";

 Assert.assertFalse(input.matches(pattern))

 Assert.assertFalse(input1.matches(pattern))

 Assert.assertFalse(input2.matches(pattern))

 Assert.assertTrue(input3.matches(pattern))

这段代码运行良好,但是当我尝试在 xsd 中使用带有模式的 maven 构建我的项目时,它失败并显示验证模式错误我做错了什么?


慕尼黑5688855
浏览 193回答 1
1回答

莫回无

我建议您使用以下限制:<xs:restriction base="xs:unsignedLong">&nbsp; &nbsp; <xs:minInclusive value="1"/>&nbsp; &nbsp; <xs:pattern value="[0-9]{20}"/></xs:restriction>这可确保您的输入是大于 的 20 位正数00000000000000000000。如果您需要基于字符串的类型,则必须按照Wiktor Stribiżew建议的模式拼出所有可能的替代方案:<xs:restriction base="xs:string">&nbsp; <xs:pattern value="[0-9]{19}[1-9]|[0-9]{18}[1-9][0-9]|[0-9]{17}[1-9][0-9]{2}|[0-9]{16}[1-9][0-9]{3}|[0-9]{15}[1-9][0-9]{4}|[0-9]{14}[1-9][0-9]{5}|[0-9]{13}[1-9][0-9]{6}|[0-9]{12}[1-9][0-9]{7}|[0-9]{11}[1-9][0-9]{8}|[0-9]{10}[1-9][0-9]{9}|[0-9]{10}[1-9][0-9]{9}|[0-9]{9}[1-9][0-9]{10}|[0-9]{8}[1-9][0-9]{11}|[0-9]{7}[1-9][0-9]{12}|[0-9]{6}[1-9][0-9]{13}|[0-9]{5}[1-9][0-9]{14}|[0-9]{4}[1-9][0-9]{15}|[0-9]{3}[1-9][0-9]{16}|[0-9]{2}[1-9][0-9]{17}|[0-9][1-9][0-9]{18}"/></xs:restriction>
随时随地看视频慕课网APP

相关分类

Java
我要回答