2016-11-03 5 views
1

휴대 전화 번호를 확인하는 정규식이 있습니다. 내가 실패 내가 my.xsd에 대해 오류 "요청 XSD 유효성 검사를받을 XML 스키마를 구현하려고하지만 때, PHP와 JS에서 일하고있다. "failed to compile: xmlFAParseAtom: expecting ')'","failed to compile: xmlFAParseRegExp: extra characters","Element '{http://www.w3.org/2001/XMLSchema}pattern': The value of the facet 'pattern' is not a valid regular expression."XML 스키마에서 regex의 올바른 구문

예 내 XSD의 난 단지 시도

<xs:simpleType name="mobile-number"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?"/> 
    </xs:restriction> 
</xs:simpleType> 

이 부분이 너무 (?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0)) 및 모든 비 캡처 그룹을 변환해야,

답변

2

패턴 14 개 그룹이 있고 그들 모두 비 캡처을. XSD Schema regex syntax 같은 그룹 구조를 지원하지 않습니다입니다 같은 오류가 발생했습니다 ((?:...)) ~에 capturi ng ((...)) 개입니다.

사용

<xs:pattern value="((\(?(0(0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(\(?0\)?[\s-]?)?)|(\(?0))((\d{5}\)?[\s-]?\d{4,5})|(\d{4}\)?[\s-]?(\d{5}|\d{3}[\s-]?\d{3}))|(\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))([\s-]?(x|ext\.?|#)\d{3,4})?" /> 
+0

너무 감사합니다! :) – SomethingElse

관련 문제