Тестер шаблонов XSD Regex
Шаблон XSD
Преобразованный шаблон
^[A-Z]{2}[0-9]{3}$Тестовая строка
Результат
AB123Справочник по синтаксису XSD-выражений
Классы символов
| . | Any character |
| [abc] | Match a, b, or c |
| [^abc] | Match anything except a, b, c |
| [a-z] | Character range (a to z) |
| \d | Digit (0-9) |
| \D | Non-digit |
| \s | Whitespace |
| \S | Non-whitespace |
| \p{L} | Unicode letter category(\p{L} (with 'u' flag)) |
| \p{N} | Unicode number category(\p{N} (with 'u' flag)) |
| \i | XML initial name character (XSD only, supported by xspattern) |
| \c | XML name character (XSD only, supported by xspattern) |
| [a-z-[aeiou]] | Character class subtraction (XSD only, supported by xspattern) |
Квантификаторы
| a* | 0 or more |
| a+ | 1 or more |
| a? | 0 or 1 (optional) |
| a{n} | Exactly n times |
| a{n,} | n or more times |
| a{n,m} | Between n and m times |
| a*? | 0 or more (non-greedy) |
| a+? | 1 or more (non-greedy) |
Группы
| (abc) | Capturing group |
| (?:abc) | Non-capturing group |
| a|b | Match a or b |
Экранированные символы
| \t | Tab |
| \n | Newline |
| \r | Carriage return |
| \xhh | Hex character |
| \uhhhh | Unicode character |
Важные отличия от JavaScript
| No anchors | XSD patterns match entire string by default (implicit ^ and $). xspattern handles this correctly. |
| No lookahead/lookbehind | XSD does not support (?=...), (?!...), (?<=...), (?<!...) |
| Unicode categories | XSD supports \p{L}, \p{N}, etc. xspattern supports Unicode 15.0. |
| XML name chars | XSD has \i and \c for XML name characters. xspattern supports these. |
| Character class subtraction | XSD supports [a-z-[aeiou]] syntax. xspattern fully supports this feature. |
Технические детали
Как работает тестер шаблонов XSD Regex
Что делает инструмент
Тестер шаблонов XSD regex позволяет проверять регулярные выражения из XML Schema Definition (XSD) на примерах текста. Регулярные выражения XSD существенно отличаются от JavaScript regex: по умолчанию они сопоставляют всю строку целиком (неявные якоря ^ и $), не поддерживают проверки lookahead/lookbehind и имеют специфические правила синтаксиса для XML-валидации. Этот инструмент преобразует XSD-шаблоны в совместимые с JavaScript регулярные выражения для тестирования, одновременно объясняя различия. Он полезен разработчикам, работающим с XML-схемами, XSD-валидацией и обработкой XML-данных, которым нужно проверять ограничения шаблонов, заданные в XSD-файлах.
Распространенные сценарии использования для разработчиков
Разработчики используют тестеры XSD-шаблонов при работе с определениями XML Schema, содержащими regex-ограничения. Шаблоны XSD часто применяются для проверки содержимого XML-элементов, например адресов электронной почты, дат, идентификаторов или пользовательских форматов. При создании XSD-схем разработчикам нужно тестировать ограничения шаблонов, чтобы убедиться, что они корректно принимают ожидаемый ввод и отклоняют неверные данные. Инструмент помогает проверить, что шаблоны вроде [A-Z][0-9] корректно сопоставляют форматы вроде "AB123", но отклоняют "ab123" или "ABC123". Тестеры XSD-шаблонов важны для разработки XML-схем, валидации данных и обеспечения соответствия стандартам XML.
Ключевые отличия от JavaScript Regex
Регулярные выражения XSD имеют несколько важных отличий от JavaScript regex. Во‑первых, XSD-шаблоны по умолчанию сопоставляют всю строку целиком, поэтому не нужно добавлять якоря ^ и $. Шаблон [A-Z] автоматически сопоставляет только строки, которые состоят ровно из двух заглавных букв. Во‑вторых, XSD не поддерживает проверки lookahead ( (?=...)) и lookbehind ( (?<=...)). В‑третьих, XSD поддерживает категории Unicode, такие как \p{L} для букв и \p{N} для чисел, которые в JavaScript требуют Unicode-флага. В XSD также есть специальные последовательности, такие как \i и \c для символов XML-имён, которых нет в JavaScript regex.
Примеры шаблонов XSD
К распространённым шаблонам XSD относятся форматы дат, например \d{4}-\d{2}-\d{2} для дат YYYY-MM-DD, шаблоны идентификаторов вроде [A-Z][0-9] для двух букв, за которыми следуют три цифры, и Unicode-шаблоны вроде \p{L}+ для одной или более Unicode-букв. Инструмент показывает, как эти шаблоны преобразуются в JavaScript regex и сопоставляются ли тестовые строки с шаблоном целиком (полное совпадение) или только частично (частичное совпадение). Поскольку XSD-шаблоны должны сопоставлять всю строку, частичные совпадения указывают на то, что шаблон не полностью валидирует ввод.
Лучшие практики
При тестировании XSD-шаблонов помните, что они валидируют целые строки, а не подстроки. Шаблон вроде \d+ будет сопоставлять только строки, полностью состоящие из цифр, а не строки, содержащие цифры. Используйте классы символов и квантификаторы корректно: [A-Za-z]+ сопоставляет одну или более букв, а [A-Za-z]* — ноль или более букв. Для XML-валидации тестируйте как корректные, так и некорректные входные данные, чтобы убедиться, что ваши шаблоны правильно принимают ожидаемые данные и отклоняют некорректный ввод. Инструмент отображает преобразованный шаблон JavaScript regex, чтобы вы могли увидеть, как XSD-шаблоны переводятся для целей тестирования.