Java XML架构模式错误
我正在尝试编写一个XML模式。具体要求我验证一个字段,使其以字母开头,后跟字母数字字符(例如,Foo3x4有效,3Foo或Foo3_u无效) 我就是这样写的:Java XML架构模式错误,java,regex,validation,xsd,jaxb,Java,Regex,Validation,Xsd,Jaxb,我正在尝试编写一个XML模式。具体要求我验证一个字段,使其以字母开头,后跟字母数字字符(例如,Foo3x4有效,3Foo或Foo3_u无效) 我就是这样写的: <xsd:simpleType name="nameType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="^[a-zA-z][a-zA-Z0-9]*$" /> </xsd:restriction
<xsd:simpleType name="nameType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="^[a-zA-z][a-zA-Z0-9]*$" />
</xsd:restriction>
</xsd:simpleType>
但是,如果我尝试验证一个名为H0的文档,它会给出以下错误(由我翻译成英语):
cvc模式有效:值“H0”作为类型nameType的模式“^[a-zA-z][a-zA-Z0-9]*$”的刻面无效
我不明白为什么。在(/^[a-zA-z][a-zA-Z0-9]*$/gm
)上使用它,它可以工作。我在模式规范中遗漏了什么吗
最后一个细节。验证错误由jaxbjava框架中的封送员给出 您需要删除隐式锚定的
^
和$
以及^
和$
在这些模式中不用作锚定,并修复[a-zA-z]
字符类中的打字错误,如果您需要匹配任何ASCII字母(请参阅,[a-z]
不仅匹配ASCII字母)
使用
此模式实际上将匹配以下内容
- 隐式匹配字符串的开头
-任何ASCII字母[a-zA-Z]
-零个或多个ASCII字母和/或数字[a-zA-Z0-9]*
- 隐式匹配字符串的结尾
<xsd:pattern value="[a-zA-Z][a-zA-Z0-9]*" />