/ / Regex für Liste der Zahlen - Regex, XML, Xsd

Regex für die Liste der Zahlen - regex, xml, xsd

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

Angenommen, 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.