数字列表的正则表达式

Regex for List of numbers

我试图通过在 xsd 中给出限制来验证 xml 模式。该模式有 555-333-4834,444-233-3333 可以包含一个或多个 phone 号码。

这是我的解决方案:

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

目的是检查前 3 个是否为数字。我试着用这个来测试。它适用于 1 个数字但不适用于数字列表。

这个工作:
^([0-9]{3}-[0-9]{3}-[0-9]{4})(,[0-9]{3}-[0-9]{3}-[0-9]{4})*$

它适用于一个或多个逗号分隔的 phone 数字。

假设所有 phone 数字必须完全符合您发布的格式 (nnn-nnn-nnnn),此正则表达式将匹配一个或多个,以逗号分隔(不允许 leading/trailing 逗号) :

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

如果允许使用 leading/trailing 逗号,则格式为:

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

限制maxLength = 14 避免出现多个电话号码。此外,您必须按照@aaron_world_traveler 和@Paco Abato 在他的回答中建议的那样修改模式。

顺便说一句,根据您当前的架构,您可以使用多个 PhoneNumber 标签,每个标签有一个号码。