C#正则表达式-特殊字符

C# Regular Expression-Special characters

我在下面提到了将识别以下特殊字符的正则表达式:

~!@©#$%^&*()_+{}|:"<>?`€[]\;',./

正则表达式:

var rx = new Regex(@"[\p{IsLatin-1Supplement}\p{P}\p{S}]");
var str = "~!@©#$%^&*()_+{}|:\"<>?€[]\;',./`éöò";
var all = rx.Matches(str).Cast<Match>().ToList();

如何在上面的正则表达式中排除文字点字符 (.),因为我需要验证有效的价格值,如“16.01”(点在这种情况下有效).

\p{P} 包含 . 符号,因此匹配。

如果字符 class 不再是 "special" 字符,您可以从字符中减去点,列表中的其他标点符号是:

[\p{IsLatin-1Supplement}\p{P}\p{S}-[.]]

然后16.01将不匹配。