XSD正则表达式失败验证:意外元字符
问题描述:
<xsd:element name="HomePhone" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="^+[0-9]{1,2}-[0-9]{1,2}-[0-9]{3}[0-9]{0,1}-[0-9]{3}[0-9]{0,1}$"></xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
被返回错误
XSD:正则表达式 “^ + [0-9] {1,2} - [0-9] {1,2} - [0-9] {3} [0-9] {0,1} - [0-9] {3} [0-9] {0,1} $” 未能在位置1验证: 意外的元字符。
任何想法是什么错?
预先感谢
答
在XML Schema正则表达式中,所有匹配都隐式锚定在两端,因此您不需要添加^
和$
。根据规范,这两个字符应该被视为字面文本。但是,如果是这样的话,你的正则表达式中的^+
会尝试匹配一个或多个^
字符,而不是抛出异常。
我怀疑他们被视为锚,尽管规范。而且不止一次匹配锚点,所以+
被视为错误。想想看,在任何情况下都没有量化的位置是没有意义的; +
应该做什么?无论如何,你的正则表达式应该工作,如果你删除该字符。
答
^ Start of line
+ preceding character one or more times
没有 '前面的字符'。