views:

56

answers:

2

Hi all,

This snippet

<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>

is returning the error

XSD: The regular expression '^+[0-9]{1,2}-[0-9]{1,2}-[0-9]{3}[0-9]{0,1}-[0-9]{3}[0-9]{0,1}$' failed to validate at location 1: Unexpected meta character.

Any idea what is wrong?

Thanks in advance

+2  A: 
^     Start of line
+     preceding character one or more times

There is no 'preceding character'.

Wrikken
+1  A: 

In the XML Schema regex flavor, all matches are implicitly anchored at both ends, so you don't need to add the ^ and $. According to the spec, those two characters are supposed to be treated as literal text. But if it that were the case, the ^+ in your regex would try to match one or more ^ characters, not throw an exception.

I suspect they're being treated as anchors despite the spec. And it makes no sense to match an anchor more than once, so the + is treated as an error. Come to think of it, it makes no sense to have a quantifier in that position in any case; what was the + supposed to do? Anyway, your regex should work if you delete that character.

Alan Moore