正则表达式替换无效字符

cor*_*erm 6 c# regex

我没有太多使用RegEx的经验,所以我使用许多链式String.Replace()调用来删除不需要的字符 - 我可以编写一个RegEx来简化这个吗?

string messyText = GetText();
string cleanText = messyText.Trim()
         .ToUpper()
         .Replace(",", "")
         .Replace(":", "")
         .Replace(".", "")
         .Replace(";", "")
         .Replace("/", "")
         .Replace("\\", "")
         .Replace("\n", "")
         .Replace("\t", "")
         .Replace("\r", "")
         .Replace(Environment.NewLine, "")
         .Replace(" ", "");
Run Code Online (Sandbox Code Playgroud)

谢谢

999*_*999 14

试试这个正则表达式:

Regex regex = new Regex(@"[\s,:.;/\\]+");
string cleanText = regex.Replace(messyText, "").ToUpper();
Run Code Online (Sandbox Code Playgroud)

\s是一个等同于的字符类[ \t\r\n].


如果您只想保留字母数字字符,而不是将现有的每个非字母数字字符添加到字符类中,您可以这样做:

Regex regex = new Regex(@"[\W_]+");
string cleanText = regex.Replace(messyText, "").ToUpper();
Run Code Online (Sandbox Code Playgroud)

哪个\W是非单词字符(不是[^a-zA-Z0-9_]).