我真的希望它格式化为(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>
答案 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中声明的存储和交换选择一般的标准化格式。这些数据的提供者将负责从可接受的约定转换为规范化的约定。在传输或存储之前可接受宽松或部分验证的情况下,即使无法自动转换为规范化形式,也可以单独跟踪所提供表单中的数据。