XML-теги (я полагаю, вы спрашиваете об именах тегов) должны следовать следующим правилам:
- начинаются с буквы, точки, двоеточия или подчеркивания
- содержит только буквы, цифры, точку, подчеркивание или двоеточие (для пространств имен)
- не должно начинаться с
xml
Следовательно, регулярное выражение для допустимых имен тегов может быть:
^(?!xml)[\w.:][\w\d.:]*$
в зависимости от вашего вида регулярного выражения (например, .NET включает буквы Unicode в \w
, что допустимо для имени тега). Вы также можете использовать
^(?!xml)[p\{L}._:][\p{L}\p{N}._:]*$
, если \w
не содержит букв Unicode.
Но, конечно, вы можете использовать более строгие правила, и, возможно, не все анализаторы XML могут обрабатывать полные имена тегов Unicode. Итак, в итоге
^(?!xml)[A-Za-z._:][A-Za-z0-9._:]*$
может быть вашей лучшей ставкой ...