2016-11-03 11 views
1

携帯電話の番号を検証するための正規表現があります。 my.xsdに対して「リクエストXSD検証は、私は、XMLスキーマでそれを実装しようとすると、しかし、私はエラーを取得し、PHPとJSに失敗働いている。私は試した私のXSDXMLスキーマのregexの適切な構文

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

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

例この部分は、あまりにも(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))と14のパターン内のグループとそれらのすべてがを非キャプチャしているがあります

答えて

2

同じエラーを得た。XSD Schema regex syntaxは、このようなグループ化構文をサポートしていない、あなたはすべての非キャプチャグループを変換する必要があります((?:...) )からカプチュリへ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

関連する問題