Является ли знак at (@) действительным символом тега HTML/XML?

Я делаю удаление HTML с использованием регулярных выражений (да, я знаю, никогда не анализируйте HTML с регулярными выражениями, но я просто снимаю его, а также, к сожалению, не могу использовать какие-либо внешние библиотеки). Я использую регулярное выражение из Cookbook Regular Expressions, и он отлично поработал, но я просто столкнулся с этой проблемой:

В строке Bob Saget <[email protected]> мое регулярное выражение соответствует электронной почте как тег.

Итак, мой вопрос в том, является ли знак @ допустимым символом XML или HTML тегом? (Я не спрашиваю, действительно ли это в атрибуте, я знаю, что это так) Если это не так, я смогу успешно исключить его в своем регулярном выражении.

Я не уверен, где это посмотреть. Я посмотрел здесь, и я думаю, что это говорит о том, что в XML знак at не допускается в теге; однако, я был бы признателен за конкретное доказательство.

Ответ 1

После другого взгляда на Спецификацию XML:

Тег состоит из:

'<' Name (S Attribute)* S? '>'

A Имя состоит из:

NameStartChar (NameChar)*

A NameStartChar состоит из:

":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

A NameChar состоит из:

NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

Знак @ U+0040

Знак @ недействителен в NameChar или NameStartChar и, следовательно, недействителен в имени.