如何在 XSD 中表示 phone 个数字?
How do I represent phone numbers in XSD?
我真的希望它的格式像这样(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>
具体的正则表达式解决方案
转义您希望在 phone 数字中真正出现的括号:
<xsd:pattern value="\(\d{3}\) \d{3}-\d{4}"/>
或
<xsd:pattern value="\([0-9]{3}\) [0-9]{3}-[0-9]{4}"/>
那么任一模式都将匹配所请求表单的 phone 个数字。
一般设计注意事项
上述解决方案解决了您的具体问题,但是请记住,在美国和国际上,phone 数字通常以 (999) 999-9999
以外的许多其他方式书写。 Stack Overflow 上的这个问题解决了这个主题:A comprehensive regex for phone number validation。
更健壮的设计将 select 一种通用的、规范化的存储和交换格式,如 XSD 中所声明的那样。此数据的提供者将负责从可接受的约定转换为规范化形式。在传输或存储之前可以接受松散或部分验证的情况下,单独跟踪所提供形式的数据也很有用,即使它不能自动转换为规范化形式。
我真的希望它的格式像这样(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>
具体的正则表达式解决方案
转义您希望在 phone 数字中真正出现的括号:
<xsd:pattern value="\(\d{3}\) \d{3}-\d{4}"/>
或
<xsd:pattern value="\([0-9]{3}\) [0-9]{3}-[0-9]{4}"/>
那么任一模式都将匹配所请求表单的 phone 个数字。
一般设计注意事项
上述解决方案解决了您的具体问题,但是请记住,在美国和国际上,phone 数字通常以 (999) 999-9999
以外的许多其他方式书写。 Stack Overflow 上的这个问题解决了这个主题:A comprehensive regex for phone number validation。
更健壮的设计将 select 一种通用的、规范化的存储和交换格式,如 XSD 中所声明的那样。此数据的提供者将负责从可接受的约定转换为规范化形式。在传输或存储之前可以接受松散或部分验证的情况下,单独跟踪所提供形式的数据也很有用,即使它不能自动转换为规范化形式。