/ / Regex para lista de números - regex, xml, xsd

Regex para lista de números - regex, xml, xsd

Eu estou tentando validar um esquema xml, dando restrição no xsd. O esquema tem 555-333-4834,444-233-3333, que pode conter um ou vários números de telefone.

Esta é minha solução:

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

O objetivo é verificar se os primeiros 3 são dígitos. Eu tentei testar com isso. Ele funciona bem para 1 número, mas não para a lista de números.

Respostas:

1 para resposta № 1

Supondo que todos os números de telefone devem estar exatamente no formato que você postou (nnn-nnn-nnnn), este regex corresponderá a um ou mais, separados por vírgulas (sem vírgula inicial / final permitida):

^d{3}-d{3}-d{4}(,d{3}-d{3}-d{4})*$

Se vírgulas iniciais / finais devem ser permitidas, o padrão é:

^,?d{3}-d{3}-d{4}(,d{3}-d{3}-d{4})*,?$

0 para resposta № 2

Este faz o trabalho:
^([0-9]{3}-[0-9]{3}-[0-9]{4})(,[0-9]{3}-[0-9]{3}-[0-9]{4})*$

Ele funciona para um ou vários números de telefone separados por vírgula.


0 para resposta № 3

a restrição maxLength = 14 evita a presença de mais de um número de telefone. Além disso, você deve modificar o padrão como @aaron_world_traveler e @Paco Abato sugerir em suas respostas.

A propósito, com seu esquema atual, você pode usar várias tags PhoneNumber com um número cada.