【发布时间】:2018-08-02 11:20:32
【问题描述】:
我有一个模式:(?!^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 构建我的项目时,它会因验证模式错误而失败 我做错了什么?
【问题讨论】:
-
您是否在 XSD 中使用 XSD 正则表达式语法的模式?你不能在那里使用环视,以及
^和$锚点。 -
@WiktorStribiżew 那么我需要如何修改我的正则表达式?
-
一种方法是拼出替代方案:
[0-9]{19}[1-9]|[0-9]{18}[1-9][0-9]|... -
总是乐于助人:regex101.com
-
@fl0w 并非总是如此,regex101 不支持 XSD 正则表达式语法。
标签: java regex maven xsd java-7