此代码段
<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验证: 意外的元字符。
知道出了什么问题吗?
提前致谢
答案 0 :(得分:2)
^ Start of line
+ preceding character one or more times
没有'前面的字符'。
答案 1 :(得分:2)
在XML Schema正则表达式中,所有匹配都隐式锚定在两端,因此您无需添加^
和$
。根据规范,这两个字符应该被视为文字文本。但如果是这种情况,正则表达式中的^+
会尝试匹配一个或多个^
字符,而不是抛出异常。
尽管有规格,但我怀疑它们被视为锚点。并且多次匹配锚是没有意义的,因此+
被视为错误。想想看,无论如何在这个位置都有量词是没有意义的; +
应该做什么?无论如何,如果删除该字符,你的正则表达式应该有效。