Является ли знак 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 и, следовательно, недействителен в имени.