C# 正则表达式删除特殊字符,但保留字母数字

本文关键字:保留字 数字 正则表达式 删除 特殊字符 | 更新日期: 2023-09-27 18:35:49

return Regex.Replace(source, "[^a-zA-Z0-9% @$'"!#%&'()*+,./:;<>=?-]", string.Empty);

如何允许像 ČĆŽPŠĐ 这样的字符或带有变音符号的德语字符,...

C# 正则表达式删除特殊字符,但保留字母数字

试试这个:

Regex.Replace(source, "[^a-zA-Z0-9% @$'"!#%&'()*+,./:;<>=?'u0100-'u01FF-]", string.Empty);

德语是 : U+0100 -> U+01FF

您可以使用字符类,如下所示。

代码的简化版本:new Regex("[^''p{L}0-9 ]").Replace("this is a test ČĆŽPŠĐ ä 244 $%^&*", String.Empty);

这会产生:this is a test ČĆŽPŠĐ ä 244 .

在这种情况下,''p{L}表示标记不同语言字母的字符集。

'Č', 'Ć', 'Ž', '

Š' 和 'Đ' 都是 Unicode 类别 'Letter, Bigsim' 的一部分。您可以使用'p{..}与特定 Unicode 类别中的字符进行匹配,其中 .. 是(短)类别名称。

例如,'p{Lu}匹配"字母,大写"类别中的所有字符,'p{Ll}匹配"字母,小写"类别中的所有字符。

因此,只需将a-z替换为'p{Ll}A-Z替换为'p{Lu}(只需确保转义',或为表达式使用逐字字符串文字)。

有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#CategoryOrBlock,http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#SupportedUnicodeGeneralCategories 所有受支持的类别。