Подтвердить что ты не робот

Регулярное выражение, сопоставление образцов в xsd

Мне было интересно, как сделать регулярное выражение для любого символа, кроме * и +. Я пробовал ([^*+]) и (\[^*+]), но оба выражения кажутся неправильными. Может ли кто-нибудь указать мне в правильном направлении? Благодарю.

Изменить: Вот код-снайпер. Я приложил приведенный ниже регв в визуальную студию и все еще генерирует ошибку, когда я вхожу в обычную строку.

<xsd:element name="elementName">
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="/^[^*+]+$/"></xsd:pattern>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>   

Изменить: строка примера, которую я использую, - это "test" В результате сбой ограничения шаблона с текущим регистром ex: /^[^*+]+$/

4b9b3361

Ответ 1

В значении регулярного выражения XML Schema вы не должны добавлять разделители регулярных выражений (т.е. / в конце /^[^*+]+$/). Вам также не нужно использовать якоря (т.е. ^ в начале и $ в конце); все совпадения регулярных выражений автоматически закрепляются на обоих концах. Эта строка должна читать:

<xsd:pattern value="[^*+]+"></xsd:pattern>

... означает, что весь элемент должен состоять из одного или нескольких любых символов, кроме * и +.

Ответ 2

Вам нужно проверить всю строку. Но вам действительно не нужно избегать этого в классе символов:

/^[^*+]+$/

Ответ 3

Вы были близки:

[^*+]

enter image description here

Обратите внимание, что нет необходимости экранировать эти символы внутри квадратных скобок, потому что там нет особого значения.

EDIT: согласно http://www.regular-expressions.info/charclass.html:

Обратите внимание, что единственными специальными символами или метасимволами внутри класса символов являются закрывающая скобка (]), обратная косая черта(), каретка (^) и дефис (-). Обычные метасимволы являются нормальными символами внутри символьного класса и не требуют экранирования обратной косой черты. Для поиска звезды или плюс используйте [+ *]. Ваше регулярное выражение будет работать нормально, если вы избежите регулярных метасимволов внутри класса символов, но делаете это значительно уменьшает читаемость.

Таким образом, проблема заключается не в выходе символа. Возможно, вам нужно сопоставить все эти события. В этом случае найдите ответ @Cfreak.