正则表达式,用于将字符串重新格式化为安全的xml标记

F.P*_*F.P 0 regex xml

我目前正在尝试编写一个RegexReplace来确保输入可以用作有效的XML标记,这意味着:没有空格,没有特殊字符,只有小写等等...

是否有一个共同的方法或我必须从头开始做?

例:

string Invalid = "asd(%4 asKUd n!%mn &§a_As1";  // Invalid as a tag

string Valid = FormatToSafeXmlTag(Invalid);  // How to write this function?

// Valid = "asd4_askud_nmna_as1"
Run Code Online (Sandbox Code Playgroud)

Wel*_*bog 6

根据XML规范,元素的名称以下列方式形成:

Name   ::=  NameStartChar (NameChar)*
Run Code Online (Sandbox Code Playgroud)

哪里

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]
NameChar       ::=  NameStartChar | "-" | "." | [0-9] | #xB7 
  | [#x0300-#x036F] | [#x203F-#x2040]
Run Code Online (Sandbox Code Playgroud)

转换为正则表达式是微不足道的.

如果您要删除此定义之外的任何字符,只需反转表达式要查找的字符.