我试图通过在xsd中给出限制来验证xml架构。架构有 555-333-4834,444-233-3333,可能包含一个或多个电话号码。
这是我的解决方案:
<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 :(得分:1)
假设所有电话号码必须完全采用您发布的格式(nnn-nnn-nnnn),此正则表达式将匹配一个或多个,以逗号分隔(不允许使用前导/尾随逗号):
^\d{3}-\d{3}-\d{4}(,\d{3}-\d{3}-\d{4})*$
如果允许使用前导/尾随逗号,则模式为:
^,?\d{3}-\d{3}-\d{4}(,\d{3}-\d{3}-\d{4})*,?$
答案 1 :(得分:0)
这个人做的工作:
^([0-9]{3}-[0-9]{3}-[0-9]{4})(,[0-9]{3}-[0-9]{3}-[0-9]{4})*$
适用于一个或多个以逗号分隔的电话号码。
答案 2 :(得分:0)
限制maxLength = 14避免存在多个电话号码。此外,你必须修改模式为@aaron_world_traveler和@Paco Abato在他的答案中建议。
顺便说一句,使用您当前的架构,您可以使用多个PhoneNumber标签,每个标签都有一个数字。