Regex XSD正则表达式验证失败:意外的元字符

Regex XSD正则表达式验证失败:意外的元字符,regex,xsd,Regex,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}$"></xs

这个片段

<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验证: 意外的元字符

你知道怎么了吗

提前谢谢

^     Start of line
+     preceding character one or more times
没有“前置字符”


没有“前置字符”。

在XML模式regex flavor中,所有匹配项都隐式地锚定在两端,因此不需要添加
^
$
。根据规范,这两个字符应该被视为文本。但是如果是这样,正则表达式中的
^+
将尝试匹配一个或多个
^
字符,而不是抛出异常


我怀疑,尽管有规范,它们仍被视为锚点。而且多次匹配锚点是没有意义的,因此
+
被视为错误。想一想,在任何情况下,在那个位置有一个量词都是没有意义的;
+
应该做什么?无论如何,如果删除该字符,正则表达式应该可以工作。

在XML模式正则表达式风格中,所有匹配项都隐式地锚定在两端,因此不需要添加
^
$
。根据规范,这两个字符应该被视为文本。但是如果是这样,正则表达式中的
^+
将尝试匹配一个或多个
^
字符,而不是抛出异常

我怀疑,尽管有规范,它们仍被视为锚点。而且多次匹配锚点是没有意义的,因此
+
被视为错误。想一想,在任何情况下,在那个位置有一个量词都是没有意义的;
+
应该做什么?无论如何,如果删除该字符,正则表达式应该可以工作