Xml 当XSD包含正则表达式字符类时,是否有人也会遇到JAXB验证问题?

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"/>

我们使用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: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})?