Не удалось проверить регулярное выражение XSD: неожиданный метасимвол - PullRequest
0 голосов
/ 21 июля 2010

Этот фрагмент

<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: неожиданный метасимвол.

Есть идеи, что не так?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

В варианте регулярного выражения XML-схемы все совпадения неявно привязаны на обоих концах, поэтому вам не нужно добавлять ^ и $. Согласно спецификации, эти два символа должны рассматриваться как буквальный текст. Но если бы это было так, ^+ в вашем регулярном выражении будет пытаться сопоставить один или несколько символов ^, а не выбрасывать исключение.

Я подозреваю, что с ними обращаются как с якорями, несмотря на спецификацию. И нет смысла сопоставлять привязку более одного раза, поэтому + считается ошибкой. Если подумать, в любом случае нет смысла иметь квантификатор в этой позиции; что должен был сделать +? В любом случае, ваше регулярное выражение должно работать, если вы удалите этот символ.

2 голосов
/ 21 июля 2010
^     Start of line
+     preceding character one or more times

Нет предшествующего символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...