Ich versuche, ein XML-Schema durch Einschränkung in xsd zu überprüfen. Das Schema hat 555-333-4834,444-233-3333, die entweder eine oder mehrere Telefonnummern enthalten kann.
Das ist meine Lösung:
<xs:element name="PhoneNumber" minOccurs="1" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="14"></xs:maxLength>
<xs:minLength value="10"></xs:minLength>
<xs:pattern value="^[0-9]{3}(-[0-9]{3})(-[0-9]{4})?"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
Ziel ist es zu prüfen, ob die ersten 3 Ziffern sind. Ich habe versucht, dies zu testen. Es funktioniert gut für eine Nummer, aber nicht für eine Liste von Nummern.
Antworten:
1 für die Antwort № 1Angenommen, alle Telefonnummern müssen exakt in dem von Ihnen geposteten Format (nnn-nnn-nnnn) angegeben sein. Diese Regex-Werte stimmen mit einem oder mehreren Zeichen überein, die durch Kommas getrennt sind.
^d{3}-d{3}-d{4}(,d{3}-d{3}-d{4})*$
Wenn führende / nachgestellte Kommas erlaubt werden sollen, lautet das Muster:
^,?d{3}-d{3}-d{4}(,d{3}-d{3}-d{4})*,?$
0 für die Antwort № 2
Dieser erledigt die Arbeit:
^([0-9]{3}-[0-9]{3}-[0-9]{4})(,[0-9]{3}-[0-9]{3}-[0-9]{4})*$
Es funktioniert für eine oder mehrere durch Kommas getrennte Telefonnummern.
0 für die Antwort № 3
Die Einschränkung maxLength = 14 vermeidet das Vorhandensein von mehr als einer Telefonnummer. Außerdem müssen Sie das Muster ändern, wenn @aaron_world_traveler und @Paco Abato in seinen Antworten vorschlagen.
Im aktuellen Schema können Sie übrigens mehrere PhoneNumber-Tags mit jeweils einer Nummer verwenden.