Xml 当XSD包含正则表达式字符类时,是否有人也会遇到JAXB验证问题?
我们使用JAXB1.0.6(该项目从JDK1.4开始,这是最后一个兼容版本)从XSD规范创建XML文件。XSD使用以下regexp模式定义属性“email”Xml 当XSD包含正则表达式字符类时,是否有人也会遇到JAXB验证问题?,xml,regex,xsd,jaxb,Xml,Regex,Xsd,Jaxb,我们使用JAXB1.0.6(该项目从JDK1.4开始,这是最后一个兼容版本)从XSD规范创建XML文件。XSD使用以下regexp模式定义属性“email” <xs:simpleType name="EmailAddress"> <xs:restriction base="xs:string"> <xs:minLength value="0"/> <xs:maxLength value="60"/>
<xs:simpleType name="EmailAddress">
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
<xs:pattern value="([\w%\.\-]+@[\w%\.\-]+\.[a-zA-Z]{2,6})?"/>
</xs:restriction>
</xs:simpleType>
IMHO,字符类\w相当于[a-zA-Z0-9.]
这么无聊_bla@somewhere.com满足表达式。如果省略下划线,验证将成功通过。为什么会这样
关于嗯。为什么你希望
\w
等同于[a-zA-Z0-9_uuz]
?
您是否尝试过用表达式替换\w
乍一看,将\w
定义为
除“标点符号”、“分隔符”和“其他”字符集以外的所有字符
[由Unicode定义]
Unicode将下划线定义为标点符号(在链接的文档中搜索
\p{p}
)我太天真了,竟然相信regexp实现是完全相同的。现在我看到XSD模式\w的含义与JAVA中的不同。塔克斯。在这种情况下可能会派上用场。它似乎没有“XML模式”作为它的一种语言,但它确实有一种语言是类似的。。。
attribute "email" has a bad value: the value does not match the
regular expression "([\w%\.\-]+@[\w%\.\-]+\.[a-zA-Z]{2,6})?