XSD仕様からXMLファイルを作成するためにJAXB1.0.6(プロジェクトはJDK1.4で開始され、これが最後の互換性のあるバージョンです)を使用しています。XSDは、次の正規表現パターンで属性「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>
電子メールbla_bla@somewhere.comを入力しようとすると、検証は失敗し、次のメッセージが表示されます。
attribute "email" has a bad value: the value does not match the
regular expression "([\w%\.\-]+@[\w%\.\-]+\.[a-zA-Z]{2,6})?
IMHO、文字クラス\wは同等です[a-zA-Z0-9_]
したがって、bla_bla@somewhere.comは式を満たします。アンダースコアを省略すると、検証は正常に合格します。なぜこうなった?
よろしく