如何在XSD中表示电话号码?

时间:2016-05-02 23:27:10

标签: xml xsd xsd-validation xml-validation

我真的希望它格式化为(999) 999-9999,但不知何故它不起作用。

<xsd:simpleType name="TelephoneType">
    <xsd:restriction base="xsd:string">
         <xsd:pattern value="(\d{3}) \d{3}-\d{4}"/>
    </xsd:restriction>
</xsd:simpleType>

我也尝试了这个并且它不起作用:

<xsd:simpleType name="TelephoneType">
    <xsd:restriction base="xsd:string">
         <xsd:pattern value="([0-9]{3}) [0-9]{3}-[0-9]{4}"/>
    </xsd:restriction>
</xsd:simpleType>

1 个答案:

答案 0 :(得分:2)

特定的正则表达式解决方案

转出您希望字面上出现在电话号码中的括号:

    <xsd:pattern value="\(\d{3}\) \d{3}-\d{4}"/>

    <xsd:pattern value="\([0-9]{3}\) [0-9]{3}-[0-9]{4}"/>

然后任一模式都会匹配所请求表单的电话号码。

一般设计考虑因素

上述解决方案针对您的具体问题,但请注意,电话号码通常以(999) 999-9999以外的许多其他方式写入,无论是在美国还是在国际范围内。有关Stack Overflow的问题已解决了此主题:A comprehensive regex for phone number validation

更强大的设计将为XSD中声明的存储和交换选择一般的标准化格式。这些数据的提供者将负责从可接受的约定转换为规范化的约定。在传输或存储之前可接受宽松或部分验证的情况下,即使无法自动转换为规范化形式,也可以单独跟踪所提供表单中的数据。