2009-07-08 1 views
1

XSD 사양에서 XML 파일을 만들 때 JAXB 1.0.6을 사용하고 있습니다 (이 프로젝트는 JDK1.4에서 시작되었으며 마지막 호환 버전입니다). XSD는 다음 정규식 패턴으로 "email"속성을 정의합니다.XSD에 정규 표현식 문자 클래스 w가 포함되어 있으면 JAXB 유효성 검사에 문제가있는 사람도 있습니까?

<xs:simpleType name="EmailAddress"> 
    <xs:restriction base="xs:string"> 
     <xs:minLength value="0"/> 
     <xs:maxLength value="60"/> 
     <xs:pattern value="([\w%\.\-][email protected][\w%\.\-]+\.[a-zA-Z]{2,6})?"/> 
    </xs:restriction> 
</xs:simpleType> 

당신은 검증이 다음 메시지와 함께 실패합니다 이메일 [email protected] 입력하려고하면 :

attribute "email" has a bad value: the value does not match the 
regular expression "([\w%\.\-][email protected][\w%\.\-]+\.[a-zA-Z]{2,6})? 

IMHO, 캐릭터 클래스 \ (W)가 [a-zA-Z0-9_]

에 해당을 그래서 [email protected]은 표현을 만족시킵니다. 밑줄을 생략하면 유효성 검사가 성공적으로 통과합니다. 왜 이런 일이 일어나는 걸까요?

감사합니다.

답변

2

흠. \w[a-zA-Z0-9_]과 동등한 이유는 무엇입니까? \w을 다음 표현식으로 대체 해 보셨습니까? 언뜻 XML schema (search for \w)에서

는 "문장", "분리"와 설정을 제외 \w

모든 문자를 정의하는 "기타"문자

[유니 의해 정의]

유니 코드 seems은 밑줄을 구두점으로 정의합니다 (링크 된 문서에서 \p{P} 검색).

+1

정규식 구현이 모두 동일하다고 생각하는 것은 순진합니다. 이제 XSD 패턴 \ w가 JAVA에서와 같은 의미가 다르다는 것을 알았습니다. 고맙습니다. – huo73

+0

http://txt2re.com은 이와 같은 상황에 유용 할 수 있습니다. 그것은 하나의 언어로 "XML 스키마"를 가지고있는 것 같지 않지만, 아마 가지고있는 것들 중 하나는 비슷합니다 ... – MatrixFrog