首页 > 解决方案 > C# - 正则表达式 - 替换不匹配的字符

问题描述

[有类似的问题,但没有一个能满足我的需要]

我允许用户输入匹配此正则表达式的文本:

string validChars = @"^[A-Za-zÀ-ÖØ-öø-ÿ0-9\s\.\-\&\,\'\(\)_\/\""\!\:\%]*?$";

我想要做的是删除与该正则表达式不匹配的字符

我怎样才能反转正则表达式,所以我可以做

invalidChars  = some_trick_to_invert_regex(validChars); 
text = Regex.Replace(text, invalidChars , "");

感谢您的帮助

标签: c#regex

解决方案


您可以通过将括号放在括号内来将要保留的字符列入白名单^。例子:

string validChars = @"[^A-Za-zÀ-ÖØ-öø-ÿ0-9\s\.\-\&\,\'\(\)_\/\""\!\:\%]";
string test = "abc#de";
var result = Regex.Replace(test, validChars, ""); //abcde

推荐阅读