数字列表的正则表达式
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 标签,每个标签有一个号码。
我试图通过在 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 标签,每个标签有一个号码。